Hi:
Set  useDatabaseLock=true. 

-Clark

www.ttmsolutions.com
ActiveMQ reference guide at
http://bit.ly/AMQRefGuide 

 




test4john wrote:
> 
> Client code start producing msg OK, but if stop broker A in the middle of
> the loop (expect broker B will take over and continue to produce),
> exception occurred:
> 
> Violation of PRIMARY KEY constraint 'PK__ACTIVEMQ_MSGS__7A521F79'. Cannot
> insert duplicate key in object 'dbo.ACTIVEMQ_MSGS'.
>       at
> org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:49)
>       at
> org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1273)
>       at org.apache.activemq.ActiveMQSession.send(ActiveMQSession.java:1754)
>       at
> org.apache.activemq.ActiveMQMessageProducer.send(ActiveMQMessageProducer.java:231)
>       at
> org.apache.activemq.ActiveMQMessageProducerSupport.send(ActiveMQMessageProducerSupport.java:241)
>       at com.verizon.ams.esme.TestJMS.main(TestJMS.java:91)
> 
> 
> Suspect it is a MS Sql specific problem but not sure ..
> 
> Any suggestion appreciated !
> 
> -----------------------------------
> Client code:
> 
> ConnectionFactory connectionFactory = new
> ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER,
> ActiveMQConnection.DEFAULT_PASSWORD,
>                                       
> "failover:(tcp://A:61616,tcp://B:61616)?randomize=false");
>                   Connection connection = 
> connectionFactory.createConnection();
>                   connection.start();
>                   Session session = connection.createSession(false,
> Session.AUTO_ACKNOWLEDGE);
>                   Queue testQueue = session.createQueue("MYTest");
>                   MessageProducer producer = 
> session.createProducer(testQueue);
>                   producer.setDeliveryMode( DeliveryMode.PERSISTENT );
> 
>                   Message testMessage = session.createMessage();
>                   for(int i = 0; i < 30; i++){
>                       testMessage.setStringProperty("testKey" + i, 
> "testValue" + i);
>                       producer.send(testMessage);
>                       System.out.println("Now " + i + "th msg is produced.");
>                       Thread.sleep(1000);
>                   }
> 
> 
> 
> Two brokers configured as:
> 
> 
> <beans
>   
>   <bean id="mssql-ds" class="org.apache.commons.dbcp.BasicDataSource"
> destroy-method="close">
>       <property name="driverClassName"
> value="com.microsoft.sqlserver.jdbc.SQLServerDriver" /> 
>       <property name="url"
> value="jdbc:sqlserver://dbserver:1433;databaseName=dbn;user=user;password=pwd"
> /> 
>       <property name="username" value="user" /> 
>       <property name="password" value="pwd" /> 
>   </bean>
> 
>   <broker useJmx="false" xmlns="http://activemq.apache.org/schema/core";>
> 
>     <!-- In ActiveMQ 4, you can setup destination policies -->
>     <destinationPolicy>
>       <policyMap>
>         <policyEntries>
> 
>           <policyEntry topic="FOO.>">
>             <dispatchPolicy>
>               <strictOrderDispatchPolicy/>
>             </dispatchPolicy>
>             <subscriptionRecoveryPolicy>
>               <lastImageSubscriptionRecoveryPolicy/>
>             </subscriptionRecoveryPolicy>
>           </policyEntry>
> 
>         </policyEntries>
>       </policyMap>
>     </destinationPolicy>
> 
> 
>       
>   <persistenceAdapter>
>       <jdbcPersistenceAdapter dataDirectory="activemq-data"
> dataSource="#mssql-ds" useDatabaseLock="false"/>
>   </persistenceAdapter>
>   
>  
> 
>     <transportConnectors>
>       <transportConnector name="openwire" uri="tcp://0.0.0.0:61616"
> discoveryUri="multicast://default"/>
>       <transportConnector name="stomp" uri="stomp://localhost:61613"/>
>       <transportConnector name="xmpp" uri="xmpp://localhost:61222"/>
>     </transportConnectors>
> 
>     <networkConnectors>
>       <!-- by default just auto discover the other brokers -->
>       <!-- networkConnector name="defaultNetwork"
> uri="multicast://default"/ -->
>       <!--
>       <networkConnector name="host1 and host2"
> uri="static://(tcp://host1:61616,tcp://host2:61616)" failover="true"/>
>       -->
>     </networkConnectors>
> 
>   </broker>
> 
>   <!-- lets create a command agent to respond to admin commands over JMS
> or XMPP on the ActiveMQ.Agent topic -->
>   <commandAgent xmlns="http://activemq.apache.org/schema/core"/>
> 
> </beans>
> 
> 
> 

-- 
View this message in context: 
http://old.nabble.com/MS-Sql-server-Master-Slave-problem-tp29144656p29144759.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.

Reply via email to