[ 
https://issues.apache.org/jira/browse/ARTEMIS-3526?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17428350#comment-17428350
 ] 

Justin Bertram commented on ARTEMIS-3526:
-----------------------------------------

It's worth noting that questions like this should be directed to the [ActiveMQ 
users mailing list|http://activemq.apache.org/contact]. Jira is typically 
reserved for confirmed bugs, feature requests, etc. If you need to follow up on 
this please do so there. Thanks!

> Messages get stuck in delivering status on a queue.
> ---------------------------------------------------
>
>                 Key: ARTEMIS-3526
>                 URL: https://issues.apache.org/jira/browse/ARTEMIS-3526
>             Project: ActiveMQ Artemis
>          Issue Type: Bug
>          Components: Broker
>    Affects Versions: 2.18.0
>            Reporter: Jelmer
>            Priority: Major
>
> It seems that not "well behaved" consumers can cause messages to get stuck in 
> a delivering-status on a queue. It seems like the following can occur (sample 
> code follows):
> 1) Create a xa-connection/xa-session to an Artemis broker
> 2) Create a consumer on a queue on this Broker.
> 3) Start the "xa-transaction"
> 4) Consume a message
> 5) End the "xa-transaction"
> 6) Initiate a "xa-prepare" for the two-phase commit
> 7) DO NOT initiate a "xa-commit" (the consumer is not wel behaved or gets 
> killed half way through the process etc.).
>  
> In code (partial and based on the  XAReceiveExample from the Artemis-samples):
> {code:java}
> try (final XAConnection xaconnection = createXAConnection(xacf);
>     final XASession xaSession = createXASession(xaconnection)) {
>    final MessageConsumer consumer = xaSession.createConsumer(queue);
>    final Xid xid = createXid();
>    final XAResource xaRes = xaSession.getXAResource();
>    xaRes.start(xid, XAResource.TMNOFLAGS);
>    final Message message = consumer.receive(2000);
>    System.out.println("MESSAGE CONSUMED [" + message.getJMSMessageID() + "]");
>    xaRes.end(xid, XAResource.TMSUCCESS);
>    xaRes.prepare(xid);
>    //xaRes.commit(xid, false);
>    System.out.println("MESSAGE SORT OF COMMITTED [" + 
> message.getJMSMessageID() + "]");
> } {code}
>  
> After this the message seems to be stuck on the queue because it is still 
> being delivered to a consumer which is already gone. They show up in the 
> queue metrics but the actual message/content cannot be seen, queried, 
> consumed etc. We can see them using "artemis data exp" however.
>  
> We have the following questions:
> 1) Is there a way to get these messages out of this state, i..e. route them 
> to an expiry-queue after 24 hours or manualy ?
> 2) Is there (apart from "artemis data exp") a way to see the content ?



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to