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.