Using jTDS JDBC driver instead of sqljdbc(4).jar seems sloved the problem. Works fine so far ..
cobrien wrote: > > Each instance will try to run "SELECT <tablename> FOR UPDATE" to > acquire a lock. > > I would first check if the "SELECT FOR UPDATE" syntax is supported by > your version of SQL Server. > I think at one time this syntax was not supported. See > http://www.informit.com/articles/article.aspx?p=327394&seqNum=2. > > If it turns out that MS SQL supports the 'select for update' syntax I > would check the database configuration and also make sure none of your dev > tools are holding a lock. > > Let us know how it turned out - ActiveMQ may need an adapter for MS > SQL. > > -Clark > > www.ttmsolutions.com > ActiveMQ reference guide at > http://bit.ly/AMQRefGuide > > > > > > test4john wrote: >> >> 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-tp29144656p29155459.html Sent from the ActiveMQ - User mailing list archive at Nabble.com.