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.