activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "NNZZ (JIRA)" <jira+amq...@apache.org>
Subject [jira] Created: (AMQNET-133) Consumers cannot be stopped without causing error for messages that are already in process
Date Thu, 11 Dec 2008 15:49:05 GMT
Consumers cannot be stopped without causing error for messages that are already in process
------------------------------------------------------------------------------------------

                 Key: AMQNET-133
                 URL: https://issues.apache.org/activemq/browse/AMQNET-133
             Project: ActiveMQ .Net
          Issue Type: Bug
    Affects Versions: 1.2
         Environment: ActiveMQ message Consumers
            Reporter: NNZZ
            Assignee: Jim Gomes


I do not see any way to stop listeners from accepting new messages BUT let them finish processing
messages that are already in process (like drain stop in IIS). And also a way to start them
back so new messages will be processed as normal AND also pending messages, that were sent
while the listeners were 'blocked', will be processed as well.

I am using spring.Net and when I tried Spring.Context.Support.ContextRegistry.Clear() and
SimpleMessageListenerContainer.Stop() but both methods caused failure for messages that were
already in process by the consumers (Thread aborted method) - It seems like those methods
just stopped the consumer completely. 

Since I could not  find anything that worked, I also tried changing the message selector directly
on the consumers (using JMX) to a false expression (like 1>1) , and that did stop any new
messages without interfering the processing of existing ones, but I couldn't then 'turn the
consumers back on'. When I changed the selector to a true expression (like 1=1), I could not
resend the pending messages, that where sent while the selector was false. I tried to resend
them by getting the pending messages Ids (which I got from JVM) and then invoke the retryMessage
message of org.apache.activemq.broker.region.Queue (got that object from JVM\JMx as well).
However when I did so I got the following error:

javax.jms.JMSException: No original destination for message: 05d79c66-be01-4db1-adc6-73384475a6f9:1:1:1

Would you be able to advise whether there a way to stop listeners without aborting the thread
and then start them again so that pending messages will be consumed? and if not would that
be possible to add such functionality? It is required when updating our service (the exe files)
that is using ActiveMQ.

Many thanks

N


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message