Meant to add, folks should use the users list for posts like this as thats what its for, theres a bigger audience to answer things, and there isnt dev-related traffic that can often drown out individual posts like this.
On 10 May 2018 at 16:54, Robbie Gemmell <[email protected]> wrote: > The issue is known in that it was discovered previously and resolved in > the 0.23.0 release last year, via https://issues.apache.org/ > jira/browse/QPIDJMS-292. As you also seem to have identified, a > workaround is setting the prefetch to 1 (or zero for newer clients). We > dont have any plans for more 0.11.x releases. > > Robbie > > > On 10 May 2018 at 15:05, Alessandro Crotti - SMC Consulting < > [email protected]> wrote: > >> Sorry, the version we are using is 0.11.1, not 0.11.0. >> >> Il 10/05/2018 15:41, Alessandro Crotti - SMC Consulting ha scritto: >> >> Hello, >> >> Using Qpid JMS 0.11.0 AMQP 1.0 client, which is the latest version for >> Java 7, we experienced an issue when you set prefetch > 1 and start >> consuming messages from a queue in asynchronous mode, using "onMessage()" >> method and sessionMode = Session.CLIENT_ACKNOWLEDGE. >> >> Taking prefetch= 10 as example, I noticed that: >> >> 1. When you open connection/session/listener, the client sends a >> "flow" performative with linkCredit=10, which is correctly the prefetch >> value. Prefetched messages = 10 >> 2. The client starts to process the first message received using >> class "MessageDeliverTask" method "run()" (all inside >> JmsMessageConsumer.java) >> 3. There is a call "ackFromReceive(envelope)" at row 667 which, >> following sub-calls, will call method "sendFlowIfNeeded()" of class >> "AmqpConsumer" >> 4. in this method "newCredit" is calculated to send a new "flow" >> performative. Here the calculation doesn't check how many prefetched >> messages already are on client side. The currentCredit is 0, for this >> reason is sent a "flow" performative with linkCredit=10. Prefetched >> messages =20 >> 5. There is a call "messageListener.onMessage(copy);" at row 672 >> which triggers the import of the message. Then the prefetched messages = >> 19. >> 6. The process starts again from point 2 increasing constantly the >> prefetched messages collected on client side, causing timeout issues >> because if they are 1 million of messages, the client can't process them >> before they expire >> >> I compared code of method "sendFlowIfNeeded()" (see point 3) in version >> 0.11.0 with the code of version 0.31.0: in version 0.31.0 the code is >> changed and the calculation considers also "prefetchMessageCount". >> >> Is this a known issue? Will you fix it for 0.11.x version because it is >> the latest version for Java 7? >> >> Best Regards >> -- >> [image: SMC Consulting] <http://www.smcconsulting.it> >> >> [image: facebook] >> <http://www.facebook.com/SMC-Consulting-Srl-597548223675024/> [image: >> linkeding] <http://www.linkedin.com/company/smc-consulting-srl> *Alessandro >> Crotti* >> Senior Developer >> >> tel: +39 342 573 4450 >> skype: crotti.alessandro >> >> *SMC Consulting* <http://www.smcconsulting.it> >> Via dell'industria, 87 41012 Carpi (MO) - Italy >> tel: +39 059 664875 >> CONFIDENTIALITY NOTICE: This message may contain confidential and/or >> privileged information. >> If you are not the intended recipient, please do not use its contents for >> any purpose, advise >> the sender immediately by reply e-mail and delete this message and any >> attachments without retaining a copy. >> >> >> >
