Hi Validis

Yeah that sounds good. Great to hear we have a solution for this issue now.



On Tue, Aug 21, 2018 at 5:58 PM, Valdis Andersons
<valdis.anders...@vhi.ie> wrote:
> Hi Claus,
>
> That seems to work as expected, deployed a local build to test and no more 
> stale messages in un-acked states in the temp reply queues and in addition it 
> doesn't seem to brake any tests either.
> JIRA ticket here: https://issues.apache.org/jira/browse/CAMEL-12746
>
> Tomorrow I'll figure out how to use GitHub and Pull Requests correctly and 
> will get the change committed there (life-long SVN user here).
> For the time being we'll be using the local snapshot of the camel-rabbitmq 
> component and once the fix has been promoted to a general release we'll then 
> change over to that.
>
>
> Thanks,
> Valdis
>
> -----Original Message-----
> From: Claus Ibsen [mailto:claus.ib...@gmail.com]
> Sent: 21 August 2018 11:22
> To: users@camel.apache.org
> Subject: Re: Camel with Rabbitmq: messages in temp reply queue not being acked
>
> On Tue, Aug 21, 2018 at 10:05 AM, Valdis Andersons <valdis.anders...@vhi.ie> 
> wrote:
>> Hi Claus,
>>
>> Thanks for your time and the response. I'll see if I can check out the code 
>> today and build it locally and then deploy to a test environment.
>> As you suggested, I'll make a change to the TemporaryQueueReplyManager at 
>> line 139 to always create a temp queue with autoAck=ture.
>> Please let me know if you see a better alternative or if I'm missing 
>> something.
>>
>
> I think this is a good idea and also what I would try first.
>
> We love contributions
> https://scanmail.trustwave.com/?c=6600&d=9ef72zTINdsUDqY8pDvfCEraujKXx5mEd_Y0j6SfUQ&s=33&u=https%3a%2f%2fgithub%2ecom%2fapache%2fcamel%2fblob%2fmaster%2fCONTRIBUTING%2emd
>
>>
>> Thanks,
>> Valdis
>>
>> -----Original Message-----
>> From: Claus Ibsen [mailto:claus.ib...@gmail.com]
>> Sent: 21 August 2018 08:31
>> To: users@camel.apache.org
>> Subject: Re: Camel with Rabbitmq: messages in temp reply queue not
>> being acked
>>
>> Hi
>>
>> You may be on to something. It does smell like when using temporary queues 
>> for request/response then acknowledge should maybe be auto always, so the 
>> "other side" can see the message on the temporary queue, process it, and 
>> send back a reply message, for Camel to pickup.
>>
>> I wonder if you could modify the source code and try to "fix this"
>> yourself and give it some testing, and then if so you are welcome to log a 
>> JIRA and provide a patch / github PR with the fix.
>>
>> Anyone else have other thoughts or comments?
>>
>> On Fri, Aug 17, 2018 at 5:31 PM, Valdis Andersons <valdis.anders...@vhi.ie> 
>> wrote:
>>> Hi All,
>>>
>>> Been digging today through some of the Camel-RabbitMQ code and can confirm 
>>> now that the temp queue is created with the main endpoint's relevant 
>>> properties (prefetch, autoAck and some others). The ack mode is set when 
>>> the consumer get bound to the channel - TemporaryQueueReplyManager line 139:
>>>
>>> /**
>>>          * Bind consumer to channel
>>>          */
>>>         private void start() throws IOException {
>>>             tag = channel.basicConsume(getReplyTo(), endpoint.isAutoAck(), 
>>> this);
>>>         }
>>>
>>> What I haven't been able to dig out is where the TemporaryQueueReplyManager 
>>> or TemporaryQueueReplyHandler (handleReplyMessage, onReply) or any other 
>>> temp queue related logic would be sending the manual ack to RabbitMQ 
>>> (channel.basicAck) in case the original endpoint, that the settings are 
>>> taken from, had autoAck set to false.
>>>
>>> My suspicion is that either the handler class or the manager class should 
>>> be responsible for sending the manual ack, either 
>>> TemporaryQueueReplyManager line 66-67:
>>>
>>> if (handler != null) {
>>>             correlation.remove(correlationID);
>>>             handler.onReply(correlationID, properties, message);
>>>         }
>>>
>>> Or TemporaryQueueReplyHandler line 56 - 59:
>>>
>>> public void onReply(String correlationId, AMQP.BasicProperties properties, 
>>> byte[] reply) {
>>>         // create holder object with the the reply
>>>         
>>> http://scanmail.trustwave.com/?c=6600&d=9ef72zTINdsUDqY8pDvfCEraujKXx5mEd_di36OdBA&s=33&u=http%3a%2f%2flog%2einfo%28"in
>>>  onReply with correlationId= {}", correlationId);
>>>         ReplyHolder holder = new ReplyHolder(exchange, callback, 
>>> originalCorrelationId, correlationId, properties, reply);
>>>         // process the reply
>>>         replyManager.processReply(holder);
>>>     }
>>>
>>> The processReply method in ReplyManagerSupport doesn't seem to do it 
>>> either, really lost on this one.
>>>
>>> Could someone please point me to the place in the code where it's done? It 
>>> might just maybe give me an idea or two of what I might be missing in my 
>>> routing setup and how to get this working or at least how to work around 
>>> this issue.
>>>
>>>
>>> Thanks,
>>> Valdis
>>>
>>> From: Valdis Andersons
>>> Sent: 16 August 2018 16:10
>>> To: users@camel.apache.org
>>> Subject: Camel with Rabbitmq: messages in temp reply queue not being
>>> acked
>>>
>>> Hi All,
>>>
>>> Hopefully someone here can educate me on the below matter.
>>>
>>> Here is a rather long-winded description of the issue:
>>> https://scanmail.trustwave.com/?c=6600&d=57_726SgK7xmPqWydExKj9kMkCZ0
>>> s
>>> L9Ja54FnsFiiA&s=33&u=https%3a%2f%2fstackoverflow%2ecom%2fquestions%2f
>>> 5
>>> 1875646%2fapache-camel-with-rabbitmq-messages-in-temp-reply-queue-not
>>> -
>>> being-acked-when-au<https://scanmail.trustwave.com/?c=6600&d=57_726Sg
>>> K
>>> 7xmPqWydExKj9kMkCZ0sL9Ja54FnsFiiA&s=33&u=https%3a%2f%2fstackoverflow%
>>> 2
>>> ecom%2fquestions%2f51875646%2fapache-camel-with-rabbitmq-messages-in-
>>> t
>>> emp-reply-queue-not-being-acked-when-au>
>>>
>>> The essence of it is that in an InOut route with autoAck=false on the main 
>>> queue the messages on the temporary reply queue are not being acked even 
>>> though they are being fetched as indicated by the prefetch setting and the 
>>> amount of messages in an un-acked state on the temp queues.
>>>
>>> If I set the autoAck=true then it works fine but in that case I'm risking 
>>> losing messages and that's not what I want (we switched from SEDA to 
>>> RabbitMQ for this reason among others).
>>> If I set the exchange pattern to InOnly then it works fine as well as the 
>>> route then doesn't need the temp queue for the reply. That unfortunately 
>>> causes a race condition in this scenario (outputEmailEndpoint and 
>>> outputArchiveEndpoint get the message at the same time, but email route 
>>> needs to finish first before it can be archived):
>>>
>>> rest(restEndpoint).post(postEndpoint)
>>>                   .type(MyRequest.class)
>>>                   .route()
>>>                   .startupOrder(Integer.MAX_VALUE - 2)
>>>                                   .process(this::process)
>>>                                   .choice()
>>>
>>> .when(header(DELIVERYSTATUS_HEADER).isEqualTo(Status.COMPLETED)).to(o
>>> u tputEmailEndpoint, outputArchiveEndpoint)
>>>
>>> I'd also like to be sending the correct response status to the REST client 
>>> calling this service and at the moment that doesn't quite work too well as 
>>> the un-acked messages start blocking the route or the response will be sent 
>>> before email route has finished.
>>>
>>> I'm only new to Camel so I might be missing something very obvious here but 
>>> the last few days of searching around and trying various config options 
>>> haven't really got me anywhere further.
>>>
>>>
>>> Thanks and Best Regards,
>>> Valdis
>>
>>
>>
>> --
>> Claus Ibsen
>> -----------------
>> http://scanmail.trustwave.com/?c=6600&d=9ef72zTINdsUDqY8pDvfCEraujKXx5
>> mEd6Rs2qzNAw&s=33&u=http%3a%2f%2fdavsclaus%2ecom @davsclaus Camel in
>> Action 2:
>> https://scanmail.trustwave.com/?c=6600&d=9ef72zTINdsUDqY8pDvfCEraujKXx
>> 5mEd6tij6abUA&s=33&u=https%3a%2f%2fwww%2emanning%2ecom%2fibsen2
>>
>> Vhi Group DAC (Vhi) is a holding company for insurance and healthcare
>> services, which include Vhi Healthcare DAC, Vhi Insurance DAC, Vhi
>> Health Services DAC and Vhi Investments DAC. Vhi Healthcare DAC
>> trading as Vhi Healthcare and Vhi Insurance DAC trading as Vhi
>> Insurance are regulated by the Central Bank of Ireland. Vhi Healthcare
>> is tied to Vhi Insurance DAC for health insurance in Ireland which is
>> underwritten by Vhi Insurance DAC. Vhi Healthcare is tied to Zurich
>> Life Assurance plc for Vhi Life Term Insurance and Vhi Mortgage
>> Protection which is underwritten by Zurich Life Assurance plc. Vhi
>> Healthcare is tied to Collinson Insurance Services Limited for
>> MultiTrip Travel Insurance, Backpacker Travel Insurance and Vhi Dental
>> Insurance which are underwritten by Great Lakes Insurance SE, UK
>> branch and for Vhi Canada Cover and Vhi International Health Insurance
>> which are underwritten by Astrenska Insurance Limited. For more
>> information about the Vhi Group please go to:
>> https://scanmail.trustwave.com/?c=6600&d=9ef72zTINdsUDqY8pDvfCEraujKXx
>> 5mEd6dk36KZAg&s=33&u=https%3a%2f%2fwww%2evhi%2eie%2fabout-vhi
>>
>>
>> Tá Vhi Group DAC (Vhi) ina chuideachta sealbhaíochta le haghaidh
>> seirbhísí árachais agus seirbhísí cúram sláinte, lena n-áirítear Vhi
>> Healthcare DAC, Vhi Insurance DAC, Vhi Health Services DAC agus Vhi
>> Investments DAC. Déanann Banc Ceannais na hÉireann rialáil ar Vhi
>> Healthcare DAC, ag trádáil dó mar Vhi Healthcare, agus ar Vhi
>> Insurance DAC, ag trádáil dó mar Vhi Insurance. Tá Vhi Healthcare
>> ceangailte le Vhi Insurance DAC le haghaidh árachas sláinte in Éirinn,
>> rud atá frithgheallta ag Vhi Insurance DAC. Tá Vhi Healthcare
>> ceangailte le Zurich Life Assurance plc le haghaidh Árachais Saoil de
>> chuid Vhi agus Árachas Cosanta Morgáiste de chuid Vhi atá
>> frithgheallta ag Zurich Life Assurance plc. Tá Vhi Healthcare
>> ceangailte le Collinson Insurance Services Limited le haghaidh Árachas
>> Taistil Ilturais agus Turasóirí Mála Droma agus Árachas Fiaclóireachta
>> de chuid Vhi atá frithgheallta ag Great Lakes Insurance SE, UK branch
>> agus le haghaidh Clúdach Cheanada de chuid Vhi agus Árachas Sláinte
>> Idirnáisiúnta de chuid Vhi atá frithgheallta ag Astrenska Insurance
>> Limited. Chun tuilleadh faisnéise a fháil faoi Ghrúpa Vhi, tabhair
>> cuairt ar:
>> https://scanmail.trustwave.com/?c=6600&d=9ef72zTINdsUDqY8pDvfCEraujKXx
>> 5mEd6dk36KZAg&s=33&u=https%3a%2f%2fwww%2evhi%2eie%2fabout-vhi
>>
>> This e-mail and any files transmitted with it contain information which may 
>> be confidential and which may also be privileged and is intended solely for 
>> the use of the individual or entity to whom it is addressed. Unless you are 
>> the intended recipient you may not copy or use it, or disclose it to anyone 
>> else. Any opinions expressed are that of the individual and not necessarily 
>> that of the Vhi Group. If you have received this e-mail in error please 
>> notify the sender by return.
>>
>>
>>
>>
>>
>
>
>
> --
> Claus Ibsen
> -----------------
> http://scanmail.trustwave.com/?c=6600&d=9ef72zTINdsUDqY8pDvfCEraujKXx5mEd6Rs2qzNAw&s=33&u=http%3a%2f%2fdavsclaus%2ecom
>  @davsclaus Camel in Action 2: 
> https://scanmail.trustwave.com/?c=6600&d=9ef72zTINdsUDqY8pDvfCEraujKXx5mEd6tij6abUA&s=33&u=https%3a%2f%2fwww%2emanning%2ecom%2fibsen2



-- 
Claus Ibsen
-----------------
http://davsclaus.com @davsclaus
Camel in Action 2: https://www.manning.com/ibsen2

Reply via email to