[jboss-user] [JBoss Messaging] - Bridge qos_once_and_only_once - XA Recovery - Lost Messages
Carlo Pacini
do-not-reply at jboss.com
Mon May 24 09:31:16 EDT 2010
Carlo Pacini [http://community.jboss.org/people/jbosse] created the discussion
"Bridge qos_once_and_only_once - XA Recovery - Lost Messages"
To view the discussion, visit: http://community.jboss.org/message/544495#544495
--------------------------------------------------------------
Hi all,
i'm finding some trouble configuring XA Recovery and bridge with qos _once_and_only_once:
In this example i've deployed a queue (queuea) on jbm1 bridged with a queue (queueb) on jbm2 using qos once_and_only_once.
Following jbm 1.4.5 user guide, steps are :
1) Source and destination are on different server -> need to enlist sending and consuming session in JTA Transaction
2) Both supplied connection factories are XA
3) Enable XA recovery with JBoss Transaction
On jbm1 (ServerPeerID 49) , RemoteJMSProvider definition:
<mbean code="org.jboss.jms.jndi.JMSProviderLoader" name="jboss.messaging:service=JMSProviderLoader,name=RemoteJMSProvider">
<attribute name="ProviderName">RemoteJMSProvider</attribute>
<attribute name="ProviderAdapterClass">org.jboss.jms.jndi.JNDIProviderAdapter</attribute>
<!-- The combined connection factory -->
<attribute name="FactoryRef">XAConnectionFactory</attribute>
<!-- The queue connection factory -->
<attribute name="QueueFactoryRef">XAConnectionFactory</attribute>
<!-- The topic factory -->
<attribute name="TopicFactoryRef">XAConnectionFactory</attribute>
<attribute name="Properties">
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
java.naming.provider.url=ip.address.jbm.2:1099
</attribute>
</mbean>
queuea:
<mbean code="org.jboss.jms.server.destination.QueueService" name="jboss.messaging.destination:service=Queue,name=queuea" xmbean-dd="xmdesc/Queue-xmbean.xml">
<depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
<depends>jboss.messaging:service=PostOffice</depends>
</mbean>
Bridge:
<mbean code="org.jboss.jms.server.bridge.BridgeService" name="jboss.messaging:service=Bridge,name=queueab" xmbean-dd="xmdesc/Bridge-xmbean.xml">
<depends optional-attribute-name="SourceProviderLoader">jboss.messaging:service=JMSProviderLoader,name=JMSProvider</depends>
<depends optional-attribute-name="TargetProviderLoader">jboss.messaging:service=JMSProviderLoader,name=RemoteJMSProvider</depends>
<attribute name="SourceDestinationLookup">/queue/queuea</attribute>
<attribute name="TargetDestinationLookup">/queue/queueb</attribute>
<attribute name="QualityOfServiceMode">2</attribute>
<attribute name="MaxBatchSize">1</attribute>
<attribute name="MaxBatchTime">1000</attribute>
<attribute name="FailureRetryInterval">5000</attribute>
<attribute name="MaxRetries">-1</attribute>
<attribute name="AddMessageIDInHeader">false</attribute>
</mbean>
On jbm2 (ServerPeerID 51) queueb:
<mbean code="org.jboss.jms.server.destination.QueueService" name="jboss.messaging.destination:service=Queue,name=queueb" xmbean-dd="xmdesc/Queue-xmbean.xml">
<depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
<depends>jboss.messaging:service=PostOffice</depends>
</mbean>
Enable XA recovery with JBoss Transactions, added in jbossjta-properties.xml of jbm1 and jbm2:
<property name="com.arjuna.ats.jta.recovery.XAResourceRecovery.JBMESSAGING1"
value="org.jboss.jms.server.recovery.MessagingXAResourceRecovery;java:/DefaultJMSProvider"/>
Seems that sending messages to queuea and simulating a crash ( kill -9 pidjbm ) cause that some message are lost and not arrive on queueb.
Step to reproduce:
- started instances jbm1 and jbm2 (JBoss 4.2.3 with messaging 1.4.5, persistence on oracle db 11.2 ) on different linux server with queue and bridge definition
- sending 1000 messaging on queuea with jmeter
- while message are in transit from jbm1 to jbm2 , kill -9 jbm1
- wait a couple of minutes
- kill -9 jbm2
- start jbm1
- start jbm2
- wait 10 minutes
- looking on queueb via jmx-console there're 999 messages.
On db seems there's a stuck transaction:
SQL> select count(*) from jbm1.jbm_msg;
COUNT(*)
----------
1
SQL> select count(*) from jbm1.jbm_msg_ref;
COUNT(*)
----------
0
SQL> select count(*) from jbm1.jbm_tx;
COUNT(*)
----------
0
SQL> select count(*) from jbm2.jbm_msg;
COUNT(*)
----------
1000
SQL> select count(*) from jbm2.jbm_msg_ref;
COUNT(*)
----------
1000
SQL> select count(*) from jbm2.jbm_tx;
COUNT(*)
----------
1
In jbm1 server.log see:
2010-05-24 13:46:03,483 WARN [com.arjuna.ats.jta.logging.loggerI18N] [com.arjuna.ats.internal.jta.resources.arjunacore.norecoveryxa] [com.arjuna.ats.interna
l.jta.resources.arjunacore.norecoveryxa] Could not find new XAResource to use for recovering non-serializable XAResource < 131075, 29, 27, 1--3f578bcf:b0e5:4
bfa6494:96a-3f578bcf:b0e5:4bfa6494:96b^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
^@^@^@^@^@^@^@^@^@^@^@^@^@ >
or in another case:
SQL> select count(*) from jbm1.jbm_msg;
COUNT(*)
----------
1
SQL> select count(*) from jbm1.jbm_msg_ref;
COUNT(*)
----------
1
SQL> select count(*) from jbm1.jbm_tx;
COUNT(*)
----------
1
SQL> select count(*) from jbm2.jbm_msg;
COUNT(*)
----------
1000
SQL> select count(*) from jbm2.jbm_msg_ref;
COUNT(*)
----------
1000
SQL> select count(*) from jbm2.jbm_tx;
COUNT(*)
----------
1
jbm1 server.log :
2010-05-24 14:20:46,882 DEBUG [com.arjuna.ats.jta.logging.loggerI18N] [com.arjuna.ats.internal.jta.recovery.info.notrollback] Told not to rollback < 131075,
1--3f578bcf:e8cc:4bfa6b9d:a2e, -3f578bcf:e8cc:4bfa6b9d:a2f >
Same behaviour, send 1000 message on queuea, crash, 999 arrive on queueb.
Seems that records remain forever on db (no tansaction replication nor cleanup), suspect a configuration issue.
Looking the steps on user guide and on the wiki http://community.jboss.org/wiki/JBMBridgeConfiguration http://community.jboss.org/wiki/JBMBridgeConfiguration i've not found the error.
There're other steps to follow to configure bridge, qos once_and_only_once and xa recovery that i miss?
Thanks in advance,
Carlo
--------------------------------------------------------------
Reply to this message by going to Community
[http://community.jboss.org/message/544495#544495]
Start a new discussion in JBoss Messaging at Community
[http://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2042]
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/jboss-user/attachments/20100524/49c71eda/attachment-0001.html
More information about the jboss-user
mailing list