Marco, The issue is related to ActiveMQ. So you should discuss this point in activemq mailing list. Nevertheless, it appears that your subscription to the queue/topic has disapeared :
public void <http://grepcode.com/file/repo1.maven.org/maven2/org.apache.activemq/activemq-core/5.3.1/org/apache/activemq/broker/region/AbstractRegion.java#>acknowledge(ConsumerBrokerExchange consumerExchange, MessageAck ack) throws Exception <http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/lang/Exception.java#Exception> { 358 <http://grepcode.com/file/repo1.maven.org/maven2/org.apache.activemq/activemq-core/5.3.1/org/apache/activemq/broker/region/AbstractRegion.java#358> <http://grepcode.com/file/repo1.maven.org/maven2/org.apache.activemq/activemq-core/5.3.1/org/apache/activemq/broker/region/AbstractRegion.java#> Subscription sub = consumerExchange.getSubscription(); 359 <http://grepcode.com/file/repo1.maven.org/maven2/org.apache.activemq/activemq-core/5.3.1/org/apache/activemq/broker/region/AbstractRegion.java#359> <http://grepcode.com/file/repo1.maven.org/maven2/org.apache.activemq/activemq-core/5.3.1/org/apache/activemq/broker/region/AbstractRegion.java#> if (sub == null) { 360 <http://grepcode.com/file/repo1.maven.org/maven2/org.apache.activemq/activemq-core/5.3.1/org/apache/activemq/broker/region/AbstractRegion.java#360> <http://grepcode.com/file/repo1.maven.org/maven2/org.apache.activemq/activemq-core/5.3.1/org/apache/activemq/broker/region/AbstractRegion.java#> sub = subscriptions <http://grepcode.com/file/repo1.maven.org/maven2/org.apache.activemq/activemq-core/5.3.1/org/apache/activemq/broker/region/AbstractRegion.java#AbstractRegion.0subscriptions>.get(ack.getConsumerId()); 361 <http://grepcode.com/file/repo1.maven.org/maven2/org.apache.activemq/activemq-core/5.3.1/org/apache/activemq/broker/region/AbstractRegion.java#361> <http://grepcode.com/file/repo1.maven.org/maven2/org.apache.activemq/activemq-core/5.3.1/org/apache/activemq/broker/region/AbstractRegion.java#> if (sub == null) { 362 <http://grepcode.com/file/repo1.maven.org/maven2/org.apache.activemq/activemq-core/5.3.1/org/apache/activemq/broker/region/AbstractRegion.java#362> <http://grepcode.com/file/repo1.maven.org/maven2/org.apache.activemq/activemq-core/5.3.1/org/apache/activemq/broker/region/AbstractRegion.java#> if (!consumerExchange.getConnectionContext().isInRecoveryMode()) { 363 <http://grepcode.com/file/repo1.maven.org/maven2/org.apache.activemq/activemq-core/5.3.1/org/apache/activemq/broker/region/AbstractRegion.java#363> <http://grepcode.com/file/repo1.maven.org/maven2/org.apache.activemq/activemq-core/5.3.1/org/apache/activemq/broker/region/AbstractRegion.java#> LOG <http://grepcode.com/file/repo1.maven.org/maven2/org.apache.activemq/activemq-core/5.3.1/org/apache/activemq/broker/region/AbstractRegion.java#AbstractRegion.0LOG>.warn <http://grepcode.com/file/repo1.maven.org/maven2/commons-logging/commons-logging/1.1.1/org/apache/commons/logging/Log.java#Log.warn%28java.lang.Object%29>("Ack for non existent subscription, ack:" + ack); 364 <http://grepcode.com/file/repo1.maven.org/maven2/org.apache.activemq/activemq-core/5.3.1/org/apache/activemq/broker/region/AbstractRegion.java#364> <http://grepcode.com/file/repo1.maven.org/maven2/org.apache.activemq/activemq-core/5.3.1/org/apache/activemq/broker/region/AbstractRegion.java#> throw new IllegalArgumentException <http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/lang/IllegalArgumentException.java#IllegalArgumentException>( 365 <http://grepcode.com/file/repo1.maven.org/maven2/org.apache.activemq/activemq-core/5.3.1/org/apache/activemq/broker/region/AbstractRegion.java#365> <http://grepcode.com/file/repo1.maven.org/maven2/org.apache.activemq/activemq-core/5.3.1/org/apache/activemq/broker/region/AbstractRegion.java#> "The subscription does not exist: " 366 <http://grepcode.com/file/repo1.maven.org/maven2/org.apache.activemq/activemq-core/5.3.1/org/apache/activemq/broker/region/AbstractRegion.java#366> <http://grepcode.com/file/repo1.maven.org/maven2/org.apache.activemq/activemq-core/5.3.1/org/apache/activemq/broker/region/AbstractRegion.java#> + ack.getConsumerId()); 367 <http://grepcode.com/file/repo1.maven.org/maven2/org.apache.activemq/activemq-core/5.3.1/org/apache/activemq/broker/region/AbstractRegion.java#367> <http://grepcode.com/file/repo1.maven.org/maven2/org.apache.activemq/activemq-core/5.3.1/org/apache/activemq/broker/region/AbstractRegion.java#> } else { 368 <http://grepcode.com/file/repo1.maven.org/maven2/org.apache.activemq/activemq-core/5.3.1/org/apache/activemq/broker/region/AbstractRegion.java#368> <http://grepcode.com/file/repo1.maven.org/maven2/org.apache.activemq/activemq-core/5.3.1/org/apache/activemq/broker/region/AbstractRegion.java#> return; 369 <http://grepcode.com/file/repo1.maven.org/maven2/org.apache.activemq/activemq-core/5.3.1/org/apache/activemq/broker/region/AbstractRegion.java#369> <http://grepcode.com/file/repo1.maven.org/maven2/org.apache.activemq/activemq-core/5.3.1/org/apache/activemq/broker/region/AbstractRegion.java#> } 370 <http://grepcode.com/file/repo1.maven.org/maven2/org.apache.activemq/activemq-core/5.3.1/org/apache/activemq/broker/region/AbstractRegion.java#370> <http://grepcode.com/file/repo1.maven.org/maven2/org.apache.activemq/activemq-core/5.3.1/org/apache/activemq/broker/region/AbstractRegion.java#> } 371 <http://grepcode.com/file/repo1.maven.org/maven2/org.apache.activemq/activemq-core/5.3.1/org/apache/activemq/broker/region/AbstractRegion.java#371> <http://grepcode.com/file/repo1.maven.org/maven2/org.apache.activemq/activemq-core/5.3.1/org/apache/activemq/broker/region/AbstractRegion.java#> consumerExchange.setSubscription(sub); 372 <http://grepcode.com/file/repo1.maven.org/maven2/org.apache.activemq/activemq-core/5.3.1/org/apache/activemq/broker/region/AbstractRegion.java#372> <http://grepcode.com/file/repo1.maven.org/maven2/org.apache.activemq/activemq-core/5.3.1/org/apache/activemq/broker/region/AbstractRegion.java#> } 373 <http://grepcode.com/file/repo1.maven.org/maven2/org.apache.activemq/activemq-core/5.3.1/org/apache/activemq/broker/region/AbstractRegion.java#373> <http://grepcode.com/file/repo1.maven.org/maven2/org.apache.activemq/activemq-core/5.3.1/org/apache/activemq/broker/region/AbstractRegion.java#> sub.acknowledge(consumerExchange.getConnectionContext(), ack); 374 <http://grepcode.com/file/repo1.maven.org/maven2/org.apache.activemq/activemq-core/5.3.1/org/apache/activemq/broker/region/AbstractRegion.java#374> <http://grepcode.com/file/repo1.maven.org/maven2/org.apache.activemq/activemq-core/5.3.1/org/apache/activemq/broker/region/AbstractRegion.java#> } Regards, On Tue, Sep 4, 2012 at 9:48 AM, Marco Zapletal <[email protected]>wrote: > Hi Christian, > > have you been able to reproduce the problem? Is there any way I can > contribute? > > As I have written before, setting the prefetch=0 may circumvent the > problem. However, when restarting the queue, I receive a bunch of the > following exception, but this doesn't seem to cause problems... > > 2012-08-30 16:20:07,910 | WARN | Async error occurred: > java.lang.**IllegalArgumentException: > The subscription does not exist: > ID:ip-127-0-0-1-47409-**1346270540282-1:7:1:30950 > | org.apache.activemq.broker.**TransportConnection.Service | ActiveMQ > Transport: tcp:///127.0.0.1:48116 > java.lang.**IllegalArgumentException: The subscription does not exist: > ID:ip-127-0-0-1-47409-**1346270540282-1:7:1:30950 > at org.apache.activemq.broker.**region.AbstractRegion.** > messagePull(AbstractRegion.**java:433) > at org.apache.activemq.broker.**region.RegionBroker.** > messagePull(RegionBroker.java:**537) > at org.apache.activemq.broker.**BrokerFilter.messagePull(** > BrokerFilter.java:81) > at org.apache.activemq.broker.**BrokerFilter.messagePull(** > BrokerFilter.java:81) > at org.apache.activemq.broker.**BrokerFilter.messagePull(** > BrokerFilter.java:81) > at > > > Best regards, > Marco > > > On 01.08.2012 23:41, Christian Müller wrote: > >> Working on a test case... >> >> Best, >> Christian >> >> On Thu, Jul 26, 2012 at 12:27 PM, Marco Zapletal >> <[email protected]>**wrote: >> >> Sorry Christian, I forgot to mention this: >>> >>> We are currently using Camel 2.10 and ActiveMQ 5.6.0. But we have >>> experienced this problem with ActiveMQ 5.5.1 as well (we can also test it >>> with earlier version if this may help to find the problem). Before Camel >>> 2.10 (final) we stayed with 2.10-SNAPSHOT for a long time, so I cannot >>> confirm that we had this with 2.9 as well. >>> >>> I would of course be interested to find the actual reason for this >>> problem >>> - I just meant that the prefetch=0 somehow compensated the issue :) >>> >>> Thanks and regards, >>> >>> Marco >>> >>> >>> On 26.07.2012 00:09, Christian Müller wrote: >>> >>> I don't think this was the issue. But without to know which version of >>>> Camel and ActiveMQ do you use and how your ActiveMQ component is >>>> configured, I cannot help... >>>> >>>> Best, >>>> Christian >>>> >>>> On Wed, Jul 25, 2012 at 6:22 PM, Marco Zapletal < >>>> [email protected] >>>> >>>>> **wrote: >>>>> >>>> >>>> For producing messages to AMQ, we are using the InOnly pattern only. >>>> >>>>> >>>>> The routes in C1 look quite easy, one is consuming from the file system >>>>> and producing to AMQ, the other one is consuming from AMQ and producing >>>>> to >>>>> the file system. >>>>> >>>>> Within C2, we have now about 20 routes, which basically consume/produce >>>>> from/to a queue and and process messages within beans. >>>>> >>>>> Anyway, it seems that I have solved my problem now: I set the prefetch >>>>> limit to zero on the connection string and all tests have worked since >>>>> then >>>>> (actually I thought I have tried this before by setting the prefetch in >>>>> the >>>>> Spring config to 0 ...). Maybe this helps others in the future. >>>>> >>>>> Thanks and regards, >>>>> >>>>> Marco >>>>> >>>>> >>>>> >>>>> On 23.07.2012 04:07, Willem Jiang wrote: >>>>> >>>>> It could be more easy for us to understand your case by looking at >>>>> the >>>>> >>>>>> routes you have. >>>>>> >>>>>> On Sat Jul 21 06:40:34 2012, Christian Müller wrote: >>>>>> >>>>>> Which version of Camel and ActiveMQ do you use? >>>>>> >>>>>>> Which MEP do you use? >>>>>>> >>>>>>> Best, >>>>>>> Christian >>>>>>> >>>>>>> Sent from a mobile device >>>>>>> Am 20.07.2012 16:26 schrieb "Marco Zapletal" < >>>>>>> [email protected] >>>>>>> >>>>>>>> : >>>>>>>> >>>>>>> >>>>>>> Hi folks, >>>>>>> >>>>>>> >>>>>>>> We have an application where we have two Camel contexts (C1, C2) >>>>>>>> which >>>>>>>> exchange messages via two queues (Q1, Q2). These queues are located >>>>>>>> on the >>>>>>>> same ActiveMQ broker. Thereby, the message flow goes as follows: >>>>>>>> >>>>>>>> C1 -> Q1 -> C2 >>>>>>>> C2 -> Q2 -> C1 >>>>>>>> >>>>>>>> C2 uses furthermore some "internal" queues on the AMQ broker, but I >>>>>>>> guess >>>>>>>> they are not relevant to the problem. >>>>>>>> >>>>>>>> The issue we are facing can be described as follows and happens only >>>>>>>> when >>>>>>>> C1 or C2 go down or have to be restarted >>>>>>>> >>>>>>>> - In case, no messages are produced of either C1/C2 while the other >>>>>>>> one >>>>>>>> restarts, everything is fine - i.e., there is no problem with >>>>>>>> consuming >>>>>>>> messages >>>>>>>> >>>>>>>> - In case, messages are produced of either C1/C2 and are put in the >>>>>>>> respective queue, during the absence of the other Camel application, >>>>>>>> we >>>>>>>> gonna face problems with consuming messages from the queues. >>>>>>>> We have especially tested this scenario by stopping C2. C1 produces >>>>>>>> messages to Q1. Then we restart C2 again and (almost) nothing >>>>>>>> happened. >>>>>>>> >>>>>>>> - By almost I mean, that the context of C2 starts up without errors. >>>>>>>> What >>>>>>>> is also observed is that when we have 1 concurrentConsumer defined >>>>>>>> in >>>>>>>> the >>>>>>>> AMQ consumer configuration in C2, 1 message is consumed (if 3 >>>>>>>> concurrentConsumers are defined, 3 messages are consumed). >>>>>>>> Afterwards, >>>>>>>> consumption stops. >>>>>>>> >>>>>>>> - When restarting C2 again, 1 message is consumed from Q1 (in case >>>>>>>> of >>>>>>>> 1 >>>>>>>> concurrentConsumer) >>>>>>>> >>>>>>>> - C2 exposes also two CXF services as producers of routes. Both of >>>>>>>> the two >>>>>>>> routes have one of those "internal" AMQ queues as their final >>>>>>>> destination. >>>>>>>> When we want to access their respective WSDL URL, the request hangs. >>>>>>>> >>>>>>>> - We have an admin Web application monitoring C2 via JMX. The admin >>>>>>>> application hangs due to no response from C2's JMX services >>>>>>>> (although >>>>>>>> the >>>>>>>> C2 context starts up properly according to the logs). >>>>>>>> >>>>>>>> - Nothing special can be seen in the logs. We examined the logs on >>>>>>>> DEBUG >>>>>>>> level (on Camel as well as on AMQ side) and nothing special could be >>>>>>>> seen. >>>>>>>> >>>>>>>> - We went back to a rather base config. No transactions, no >>>>>>>> connection >>>>>>>> pools, no caching of consumers/producers. We have experimented with >>>>>>>> the >>>>>>>> prefetch (setting it to 1 or even 0) without success. >>>>>>>> >>>>>>>> - In order to reach proper behavior again, Q1/Q2 (and maybe even the >>>>>>>> "internal queues of C2) have to be purged. Then C2 has be to be >>>>>>>> restarted >>>>>>>> again. After this procedure, message passing is back to normal. >>>>>>>> >>>>>>>> >>>>>>>> Sorry for the long post, but I want to describe the problem as >>>>>>>> detailed as >>>>>>>> possible. Since we have been working on this now for days any help >>>>>>>> would be >>>>>>>> highly appreciated. >>>>>>>> >>>>>>>> >>>>>>>> Thanks and best regards, >>>>>>>> >>>>>>>> >>>>>>>> Marco >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>>> >>>>> >>>> >>> >> > -- Charles Moulliard Apache Committer / Sr. Pr. Consultant at FuseSource.com Twitter : @cmoulliard Blog : http://cmoulliard.blogspot.com
