Thanks. However, change false to true will cause:
2010-07-13 10:52:14,515 [Thread-2 ] INFO ResourceXmlApplicationContext - Refreshing org.apache.xbean.spring.context.resourcexmlapplicationcont...@96b5c2: display name [org.apache.xbean.spring.context.resourcexmlapplicationcont...@96b5c2]; startup date [Tue Jul 13 10:52:14 EDT 2010]; parent: org.springframework.web.context.support.xmlwebapplicationcont...@b51404 2010-07-13 10:52:14,515 [Thread-2 ] INFO XBeanXmlBeanDefinitionReader - Loading XML bean definitions from ServletContext resource [/WEB-INF/activemq.xml] 2010-07-13 10:52:14,671 [Thread-2 ] INFO ResourceXmlApplicationContext - Bean factory for application context [org.apache.xbean.spring.context.resourcexmlapplicationcont...@96b5c2]: org.springframework.beans.factory.support.defaultlistablebeanfact...@10d9151 2010-07-13 10:52:14,765 [Thread-2 ] INFO BrokerService - Successfully deleted temporary storage 2010-07-13 10:52:14,781 [Thread-2 ] INFO BrokerService - Using Persistence Adapter: JDBCPersistenceAdapter(org.apache.commons.dbcp.basicdatasou...@c017e9) 2010-07-13 10:52:15,265 [Thread-2 ] INFO JDBCPersistenceAdapter - Database adapter driver override not found for : [microsoft_sql_server_jdbc_driver_2_0]. Will use default implementation. 2010-07-13 10:52:15,359 [Thread-2 ] INFO JDBCPersistenceAdapter - Database lock driver override not found for : [microsoft_sql_server_jdbc_driver_2_0]. Will use default implementation. 2010-07-13 10:52:15,359 [Thread-2 ] INFO DefaultDatabaseLocker - Attempting to acquire the exclusive lock to become the Master broker 2010-07-13 10:52:15,375 [Thread-2 ] INFO DefaultDatabaseLocker - Failed to acquire lock. Sleeping for 1000 milli(s) before trying again... 2010-07-13 10:52:16,375 [Thread-2 ] INFO DefaultDatabaseLocker - Failed to acquire lock. Sleeping for 1000 milli(s) before trying again... on both brokers. sqljdbc4.jar is used. Also the embedded activemq-web-console-5.3.2.war is used as the broker instead of the standalone one. Thanks, cobrien wrote: > > 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-tp29144656p29151523.html Sent from the ActiveMQ - User mailing list archive at Nabble.com.