All,
I spent a while looking around to find a solution to the jboss + WSMQ problem described in the following page
http://www-1.ibm.com/support/docview.wss?rs=171&uid=swg21255323
specifically 'When distributed transactions are used under very high load, an attempt to put a message to a WebSphere MQ queue may occasionally fail with the reason code MQRC_SYNCPOINT_NOT_AVAILABLE'
Where JBoss is configured with WSMQ using XA using the wmq.jmsra.rar JCA adaptor. I found that at busy times I would get a MQRC_SYNCPOINT_NOT_AVAILABLE (2072) where the trasaction would roll back and try again, at the point I would post a message to another queue manager.
I couldn't find a solution and almost gave up until I found that by putting <track-connection-by-tx>true</track-connection-by-tx> in the connection data source, IE
<tx-connection-factory>
<jndi-name>WSMQJmsTest</jndi-name>
<xa-transaction/>
<rar-name>wmq.jmsra.rar</rar-name>
<connection-definition>javax.jms.QueueConnectionFactory</connection-definition>
<config-property name="hostName" type="java.lang.String">localhost</config-property>
<config-property name="queueManager" type="java.lang.String">QM_TEST</config-property>
<config-property name="port" type="java.lang.String">1420</config-property>
<track-connection-by-tx>true</track-connection-by-tx>
<max-pool-size>20</max-pool-size>
</tx-connection-factory>
I have probably processed about 500,000 messages since without a single syncpoint exception since
I just thought I would post it here to aid anyone else who had the same problem.
Thanks