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.

Reply via email to