Hello, 

This is a repost since the initial message was not accepted on the mailing
list.
I am doing an integration between OSB (Oracle Service Bus) and ActiveMQ
(version 5.9.0 and 5.15.0). Basically I want to dequeue messages stored in
an ActiveMQ queue and store them in a Weblogic queue. The dequeuing is
initiated from the OSB side by a proxy (which under the hood uses an MDB)
and this is configured to be XA enabled.
In order to be able to connect from OSB to ActiveMQ I defined a
ForeignJNDIProvider at the Weblogic level (where the OSB runs) and in this
ForeignJNDIProvider I mapped the ActiveMQ XAConnectionFactory and the queue
I am using.
I want the flow to run in a XA transaction between the ActiveMQ and the JSM
Server at Weblogic level. After the config is in place if I put a message in
the queue everything looks OK, the message is dequeued, processed correctly
and the transaction is committed OK. After this, if I enqueue 10 new
messages in ActiveMQ (via the web console) I get the following message in
the ActiveMQ logs and the majority of the messages remain in ActiveMQ (some
get dequeued but most remain):

2017-01-24 10:37:26,790 | WARN | Async error occurred:
javax.jms.JMSException: Unmatched acknowledge: MessageAck [ackType=2,
consumerId=ID:hostname-54889-1485178975287-2653:1:3:1,
firstMessageId=ID:D02DI1441258DIT-65515-1485250604824-4:1:1:1:2,
lastMessageId=ID:D02DI1441258DIT-65515-1485250604824-4:1:1:1:9,
destination=queue://TestQueue,
transactionId=XID:[48801,globalId=13ffffff8a1a949155ffffffc9ffffffc331,branchId=7765626c6f6769632e656a622e636f6e7461696e65722e4a4d53436f6e6e656374696f6e506f6c6c65722e52657175657374454a4234323034333237ffffffb5fffffffeffffffe4ffffffbd],
messageCount=2, poisonCause=null, consumerKey=null]; Could not find
Message-ID ID:D02DI1441258DIT-65515-1485250604824-4:1:1:1:2 in
dispatched-list (start of ack) |
org.apache.activemq.broker.TransportConnection.Service | ActiveMQ Transport:
tcp:///158.168.3.55:58575@61616

I downloaded the ActiveMQ code (version 15.5.0) and added a new log call in
method assertAckMatchesDispatched to print the received MessageAck (i also
tried WireShark but I couldn't get the whole message ID from the dump) and
from it it looks like ActiveMQ receives an ACK starting from a message ID
that is not present in the current transaction but was part of the previous
transaction.

2017-01-24 10:37:26,787 | DEBUG | assertAckMatchesDispatched() - Received
MessageAck: [MessageAck [ackType=2,
consumerId=ID:hostname-54889-1485178975287-2653:1:3:1,
firstMessageId=ID:D02DI1441258DIT-65515-1485250604824-4:1:1:1:2,
lastMessageId=ID:D02DI1441258DIT-65515-1485250604824-4:1:1:1:9,
destination=queue://TestQueue,
transactionId=XID:[48801,globalId=13ffffff8a1a949155ffffffc9ffffffc331,branchId=7765626c6f6769632e656a622e636f6e7461696e65722e4a4d53436f6e6e656374696f6e506f6c6c65722e52657175657374454a4234323034333237ffffffb5fffffffeffffffe4ffffffbd],
messageCount=2, poisonCause=null, consumerKey=null]]. |
org.apache.activemq.broker.region.PrefetchSubscription | ActiveMQ Transport:
tcp:///IP:58575@61616

If I use the non-xa connection factory via I have no issues in the flow,
everything is OK.

Has anybody encountered something similar? I tried version 5.9.0 and version
5.15.0 and the problem appears in both versions. It looks like the issue
might reside in the OSB/Weblogic side but I am curious if anybody
encountered something similar.

Thank you,
Ionut. 



--
View this message in context: 
http://activemq.2283324.n4.nabble.com/Unmatched-acknowledge-MessageAck-start-of-ack-in-XA-transaction-initiated-by-Oracle-Service-Bus-tp4721356.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.

Reply via email to