activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Timothy Bish (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (AMQ-3320) ActiveMQ.Advisory.MessageConsumed.TempQueue and AMQ.A.MC.Queue Topics receive advisory messages when TQ or Queue are purged
Date Tue, 12 Jul 2011 21:04:59 GMT

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

Timothy Bish commented on AMQ-3320:
-----------------------------------

I'd suggest something like this instead of the disable / enable method shown above. 

{code}
### Eclipse Workspace Patch 1.0
#P activemq-core
Index: src/main/java/org/apache/activemq/broker/region/BaseDestination.java
===================================================================
--- src/main/java/org/apache/activemq/broker/region/BaseDestination.java	(revision 1145597)
+++ src/main/java/org/apache/activemq/broker/region/BaseDestination.java	(working copy)
@@ -452,7 +452,9 @@
      * @param messageReference
      */
     public void messageConsumed(ConnectionContext context, MessageReference messageReference)
{
-        if (advisoryForConsumed) {
+        // If there are no consumers then the message was consumed by a purge which we don't
+        // want to propagate as a consumer ack of the message.
+        if (advisoryForConsumed && destinationStatistics.getConsumers().getCount()
> 0) {
             broker.messageConsumed(context, messageReference);
         }
     }
{code}

> ActiveMQ.Advisory.MessageConsumed.TempQueue and AMQ.A.MC.Queue Topics receive advisory
messages when TQ or Queue are purged
> ---------------------------------------------------------------------------------------------------------------------------
>
>                 Key: AMQ-3320
>                 URL: https://issues.apache.org/jira/browse/AMQ-3320
>             Project: ActiveMQ
>          Issue Type: Bug
>    Affects Versions: 5.4.2, 5.5.0
>            Reporter: Marcel Casado
>            Priority: Minor
>         Attachments: AdvisoryTempDestinationTests.java
>
>
> I have enabled <policyEntry tempQueue="true" advisoryForConsumed="true" /> in the
broker so I can subscribe to "ActiveMQ.Advisory.MessageConsumed.TempQueue.>" to get notified
of messages consumed on a tempQueue/s. When client shuts down 
> if remaining messages are in the tempQueue an advisory message is generated and send
to the ActiveMQ.Advisory.MessageConsumed.TempQueue topic for each message for that tempQueue.
The same will happen if purge() is called on a TempQueue or Queue for example through JMX.
 
> In my application I need to know if a message is consumed by a client but I can not differentiate
between a client "ack" massage and one "ack" by the broker when the tempQueue is "disposed"
looking to the message sent to the ActiveMQ.Advisory.MessageConsumed.TempQueue... . 
>  
> Looking at the code for TempQueue and Queue this is the sequence :
> TempQueue.dispose(context) --> purge() --> removeMessage() -> acknowledge()
--> messageConsumed() 
> This is kind of a conceptual issue since myself consider that removing a message due
a purge or a tempQueue cleanup should not trigger a messageConsumed advisory.
> Original ActiveMQ users post : http://activemq.2283324.n4.nabble.com/ActiveMQ-Advisory-MessageConsumed-TempQueue-problem-td3510067.html

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message