You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@activemq.apache.org by Roelof Naude <ro...@gmail.com> on 2010/03/15 15:17:20 UTC

JBoss 4.2.3 MDB problem

hi all,

we are currently in the process of replacing JBoss messaging with 
ActiveMQ (version 5.3.0). unfortunately we are running into a problem 
related to MDB's.

the first message to the MDB is delivered and a reply is send back. the 
2nd, and subsequent messages, are never delivered. a snippet from the 
log file with full tracing results in:
2010-03-15 15:21:36,376 DEBUG 
[org.apache.activemq.broker.region.AbstractRegion] localhost adding 
destination: 
topic://ActiveMQ.Advisory.Consumer.Topic.ID:segfault-34222-1268659100904-2:6:1
2010-03-15 15:21:36,384 DEBUG 
[za.co.mtn.usa.server.requestmanager.RequestMngrBean] ReqMngrBean 
instance [za.co.mtn.usa.server.requestmanager.RequestMngrBean@630b813f] 
created. Using temp reply topic 
[temp-topic://ID:segfault-34222-1268659100904-2:6:1]
2010-03-15 15:21:36,423 DEBUG 
[org.apache.activemq.broker.region.AbstractRegion] localhost adding 
destination: topic://ActiveMQ.Advisory.Producer.Topic.topic/testNRM_Topic
2010-03-15 15:21:36,624 TRACE [org.apache.activemq.ActiveMQSession] 
ID:segfault-34222-1268659100904-2:6:1 sending message: 
ActiveMQObjectMessage {commandId = 0, responseRequired = false, 
messageId = ID:segfault-34222-1268659100904-2:6:1:1:1, 
originalDestination = null, originalTransactionId = null, producerId = 
ID:segfault-34222-1268659100904-2:6:1:1, destination = 
topic://topic/testNRM_Topic, transactionId = null, expiration = 0, 
timestamp = 1268659296596, arrival = 0, brokerInTime = 0, brokerOutTime 
= 0, correlationId = 1268659296386_1, replyTo = 
temp-topic://ID:segfault-34222-1268659100904-2:6:1, persistent = true, 
type = null, priority = 4, groupID = null, groupSequence = 0, 
targetConsumerId = null, compressed = false, userID = null, content = 
org.apache.activemq.util.ByteSequence@5c1f9b4a, marshalledProperties = 
null, dataStructure = null, redeliveryCounter = 0, size = 0, properties 
= null, readOnlyProperties = true, readOnlyBody = true, droppable = false}
2010-03-15 15:21:36,630 TRACE [org.jboss.jms.asf.StdServerSessionPool] 
getting a server session
2010-03-15 15:21:36,630 TRACE [org.jboss.jms.asf.StdServerSessionPool] 
using server session: org.jboss.jms.asf.StdServerSession@62787c64
2010-03-15 15:21:36,630 TRACE [org.jboss.jms.asf.StdServerSession] 
starting invokes on server session
2010-03-15 15:21:36,639 TRACE [org.jboss.jms.asf.StdServerSession] 
running...
2010-03-15 15:21:36,640 TRACE [org.jboss.jms.asf.StdServerSession] 
onMessage running (pool, session, xaSession, useLocalTX): , 
ActiveMQSession {id=ID:segfault-34222-1268659100904-2:5:1,started=true}, 
null, false
2010-03-15 15:21:36,642 TRACE 
[org.jboss.ejb.plugins.jms.JMSContainerInvoker] processing message: 
ActiveMQObjectMessage {commandId = 7, responseRequired = true, messageId 
= ID:segfault-34222-1268659100904-2:6:1:1:1, originalDestination = null, 
originalTransactionId = null, producerId = 
ID:segfault-34222-1268659100904-2:6:1:1, destination = 
topic://topic/testNRM_Topic, transactionId = null, expiration = 0, 
timestamp = 1268659296596, arrival = 0, brokerInTime = 1268659296625, 
brokerOutTime = 1268659296629, correlationId = 1268659296386_1, replyTo 
= temp-topic://ID:segfault-34222-1268659100904-2:6:1, persistent = true, 
type = null, priority = 4, groupID = null, groupSequence = 0, 
targetConsumerId = null, compressed = false, userID = null, content = 
org.apache.activemq.util.ByteSequence@5c1f9b4a, marshalledProperties = 
null, dataStructure = null, redeliveryCounter = 0, size = 1606, 
properties = null, readOnlyProperties = true, readOnlyBody = true, 
droppable = false}
2010-03-15 15:21:36,654 INFO 
[za.co.mtn.usa.server.nrm.NRMStaticCacheController] Registered for 
notifications from Protocol Config
2010-03-15 15:21:36,654 INFO 
[za.co.mtn.usa.server.nrm.NRMStaticCacheController] Registered for 
notifications from Authentication Config
2010-03-15 15:21:36,662 DEBUG 
[org.apache.activemq.broker.TransportConnection] Setting up new 
connection: vm://localhost#14
2010-03-15 15:21:36,664 DEBUG 
[org.apache.activemq.broker.region.AbstractRegion] localhost adding 
consumer: ID:segfault-34222-1268659100904-2:7:-1:1 for destination: 
topic://ActiveMQ.Advisory.TempQueue,topic://ActiveMQ.Advisory.TempTopic
2010-03-15 15:21:36,676 DEBUG 
[za.co.mtn.usa.server.config.session.ProtocolEJB] Connector = 
mtn_usa/config/LocalConnector:[.101.]
2010-03-15 15:21:36,684 DEBUG 
[za.co.mtn.usa.server.config.session.ProtocolEJB] Hostname = USAInternal
2010-03-15 15:21:36,686 DEBUG 
[za.co.mtn.usa.server.config.session.ProtocolEJB] Found 1 pm's
2010-03-15 15:21:36,691 INFO 
[za.co.mtn.usa.server.nrm.NRMStaticCacheController] Retrieving elements 
for view [defaultCV]
2010-03-15 15:21:36,698 DEBUG [za.co.mtn.usa.util.protocol.AXEPool] 
(USAINTERNAL_USA) Got Connector For Service - First time
2010-03-15 15:21:36,698 DEBUG [za.co.mtn.usa.util.protocol.AXEPool] 
AXEPool(USAINTERNAL_USA)::performRequest -> sending [ping_pong]
2010-03-15 15:21:36,699 DEBUG [za.co.mtn.usa.util.protocol.AXEPool] 
AXEPool starting external timer. Total external time [120000]
2010-03-15 15:21:36,746 DEBUG [za.co.mtn.usa.util.protocol.USAConnector] 
Got command handler for ping_pong
2010-03-15 15:21:36,747 DEBUG [za.co.mtn.usa.util.protocol.AXEPool] 
AXEPool(USAINTERNAL_USA)::performRequest -> receiving data done 
[Messages [null]Named Messages [{pong=, time=Mon Mar 15 15:21:36 SAST 
2010, server=[127.0.0.1:1099], version=6.13-SNAPSHOT_2010-03-15 11:01:40}]]
2010-03-15 15:21:36,748 DEBUG 
[org.apache.activemq.broker.region.AbstractRegion] localhost adding 
destination: 
topic://ActiveMQ.Advisory.Producer.Topic.ID:segfault-34222-1268659100904-2:6:1
2010-03-15 15:21:36,756 TRACE [org.apache.activemq.ActiveMQSession] 
ID:segfault-34222-1268659100904-2:7:1 sending message: 
ActiveMQObjectMessage {commandId = 0, responseRequired = false, 
messageId = ID:segfault-34222-1268659100904-2:7:1:1:1, 
originalDestination = null, originalTransactionId = null, producerId = 
ID:segfault-34222-1268659100904-2:7:1:1, destination = 
temp-topic://ID:segfault-34222-1268659100904-2:6:1, transactionId = 
null, expiration = 0, timestamp = 1268659296755, arrival = 0, 
brokerInTime = 0, brokerOutTime = 0, correlationId = 1268659296386_1, 
replyTo = null, persistent = true, type = null, priority = 4, groupID = 
null, groupSequence = 0, targetConsumerId = null, compressed = false, 
userID = null, content = org.apache.activemq.util.ByteSequence@a7a1258, 
marshalledProperties = null, dataStructure = null, redeliveryCounter = 
0, size = 0, properties = null, readOnlyProperties = true, readOnlyBody 
= true, droppable = false}
2010-03-15 15:21:36,759 TRACE 
[org.apache.activemq.ActiveMQMessageConsumer] 
ID:segfault-34222-1268659100904-2:6:1:1 received message: 
MessageDispatch {commandId = 8, responseRequired = false, consumerId = 
ID:segfault-34222-1268659100904-2:6:1:1, destination = 
temp-topic://ID:segfault-34222-1268659100904-2:6:1, message = 
ActiveMQObjectMessage {commandId = 5, responseRequired = true, messageId 
= ID:segfault-34222-1268659100904-2:7:1:1:1, originalDestination = null, 
originalTransactionId = null, producerId = 
ID:segfault-34222-1268659100904-2:7:1:1, destination = 
temp-topic://ID:segfault-34222-1268659100904-2:6:1, transactionId = 
null, expiration = 0, timestamp = 1268659296755, arrival = 0, 
brokerInTime = 1268659296756, brokerOutTime = 1268659296757, 
correlationId = 1268659296386_1, replyTo = null, persistent = true, type 
= null, priority = 4, groupID = null, groupSequence = 0, 
targetConsumerId = null, compressed = false, userID = null, content = 
org.apache.activemq.util.ByteSequence@a7a1258, marshalledProperties = 
null, dataStructure = null, redeliveryCounter = 0, size = 1757, 
properties = null, readOnlyProperties = true, readOnlyBody = true, 
droppable = false}, redeliveryCounter = 0}
2010-03-15 15:21:36,767 TRACE [org.jboss.jms.asf.StdServerSession] 
Commiting the JMS transaction
2010-03-15 15:21:36,769 DEBUG [org.apache.activemq.ActiveMQSession] 
ID:segfault-34222-1268659100904-2:5:1 Transaction Commit :null
2010-03-15 15:21:36,769 TRACE [org.jboss.jms.asf.StdServerSession] 
onMessage done
2010-03-15 15:21:36,777 DEBUG [org.apache.activemq.TransactionContext] 
Begin:TX:ID:segfault-34222-1268659100904-2:5:1
2010-03-15 15:21:36,781 DEBUG [za.co.mtn.usa.util.logging.CALogger] 
Creating new CALogger instance...
2010-03-15 15:21:36,781 TRACE [org.jboss.jms.asf.StdServerSession] 
recycling...
2010-03-15 15:21:36,782 TRACE [org.jboss.jms.asf.StdServerSessionPool] 
recycled server session: org.jboss.jms.asf.StdServerSession@62787c64
2010-03-15 15:21:36,782 TRACE [org.jboss.jms.asf.StdServerSession] 
finished run

note the <i>onMessage done</i> and following <i>TransactionContext] 
Begin:TX</i>.

a new transaction is started when sending an ACK. this happens in 
ActiveMQSession.java:785. for some reason i cannot find where this 
transaction is supposed to be committed?

an error is logged when shutting down JBoss or undeploying the MDB:
2010-03-15 15:17:15,416 DEBUG 
[org.apache.activemq.broker.TransportConnection.Service] Error occured 
while processing async command: MessageAck {commandId = 9, 
responseRequired = false, ackType = 3, consumerId = 
ID:segfault-52712-1268658554640-2:5:-1:2, firstMessageId = 
ID:segfault-52712-1268658554640-2:6:1:1:1, lastMessageId = 
ID:segfault-52712-1268658554640-2:6:1:1:1, destination = 
topic://topic/testNRM_Topic, transactionId = null, messageCount = 1}, 
exception: java.lang.IllegalArgumentException: The subscription does not 
exist: ID:segfault-52712-1268658554640-2:5:-1:2
java.lang.IllegalArgumentException: The subscription does not exist: 
ID:segfault-52712-1268658554640-2:5:-1:2
         at 
org.apache.activemq.broker.region.AbstractRegion.acknowledge(AbstractRegion.java:363)
         at 
org.apache.activemq.broker.region.RegionBroker.acknowledge(RegionBroker.java:470)
         at 
org.apache.activemq.broker.TransactionBroker.acknowledge(TransactionBroker.java:194)
         at 
org.apache.activemq.broker.BrokerFilter.acknowledge(BrokerFilter.java:74)
         at 
org.apache.activemq.broker.BrokerFilter.acknowledge(BrokerFilter.java:74)
         at 
org.apache.activemq.broker.MutableBrokerFilter.acknowledge(MutableBrokerFilter.java:85)
         at 
org.apache.activemq.broker.TransportConnection.processMessageAck(TransportConnection.java:449)
         at 
org.apache.activemq.command.MessageAck.visit(MessageAck.java:205)
         at 
org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:297)
         at 
org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:175)
         at 
org.apache.activemq.transport.ResponseCorrelator.onCommand(ResponseCorrelator.java:109)
         at 
org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.java:68)
         at 
org.apache.activemq.transport.vm.VMTransport.iterate(VMTransport.java:205)
         at 
org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.java:122)
         at 
org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.java:43)
         at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
         at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
         at java.lang.Thread.run(Thread.java:636)

all session are create with Session.AUTO_ACKNOWLEDGE.

anything else that i can try or additional information that will help?

regards,
roelof.