singleThreadExecutor.execute (() -> this.closeConsumer(consumer)); private void closeConsumer(MessageConsumer consumer) { try { consumer.close(); } catch (Exception e) { logger.warn(e.getMessage, e); } }
A good thing of using the listener still is that you save some threads in your client. if you close from an executor, you're safe. On Sat, Oct 1, 2022 at 3:12 PM John Lilley <john.lil...@redpointglobal.com.invalid> wrote: > FYI, I developed an aversion to using receive() back when I was originally > building our POC with RabbitMQ and trying to build our framework around > receive() instead of onMessage(), but found that RabbitMQ’s JMS receive() > implementation was broken. Eventually we decided that ActiveMQ was a > better choice, but our use of onMessage() was by then solidified. > > > > Cheers, > > john > > > > > [image: rg] <https://www.redpointglobal.com/> > > John Lilley > > Chief Architect, Redpoint Global Inc. > > 888 Worcester Street, Suite 200 Wellesley, MA 02482 > > *M: *+1 7209385761 <+1%207209385761> | john.lil...@redpointglobal.com > > *From:* John Lilley <john.lil...@redpointglobal.com.INVALID> > *Sent:* Saturday, October 1, 2022 12:07 PM > *To:* users@activemq.apache.org > *Subject:* RE: Disabling prefetch > > > > **** [Caution] This email is from an external source. Please use caution > responding, opening attachments or clicking embedded links. **** > > > > Understood… unfortunately we have a framework that generates code using > onMessage() and it is a matter of expedience not to change that whole > framework right now. However I would like to change it to use receive() > once the rest of our Artemis migration is validated. > > > > john > > > > > > [image: rg] > <https://linkprotect.cudasvc.com/url?a=https%3a%2f%2fwww.redpointglobal.com%2f&c=E,1,GuuBno5AH7NQNgrTDSrHQmK6mxf_nCtVKeX87oLOkFJV3Zz2I_RuYgZ51RFtELNsx5HkUpsjs5i0WCChhG3jXbJ6PumlKEG3V5hQYd9FkQ,,&typo=1> > > *John Lilley * > > *Chief Architect, Redpoint Global Inc. * > > 888 Worcester Street, Suite 200 Wellesley, MA 02482 > > *M: *+1 7209385761 <+1%207209385761> | john.lil...@redpointglobal.com > > *From:* Clebert Suconic <clebert.suco...@gmail.com> > *Sent:* Friday, September 30, 2022 9:01 PM > *To:* users@activemq.apache.org > *Subject:* Re: Disabling prefetch > > > > **** [Caution] This email is from an external source. Please use caution > responding, opening attachments or clicking embedded links. **** > > > > I would not use a listener for a consumer that will only receive a single > message anyways. > > > > On Fri, Sep 30, 2022 at 9:46 AM John Lilley < > john.lil...@redpointglobal.com.invalid> wrote: > > Clebert, > > Thanks for the reply. I’ll try your suggestion. > > I’m not closing the consumer specifically to clear the prefetch buffer; > rather I’m closing the consumer to stop receiving more messages. The > existence of pre-fetch messages is undesirable in that case, because (1) as > you point out it is an anti-pattern, and (2) a process that fails to close > its consumer in a timely fashion will hog the prefetched messages and > prevent others from processing them. > > john > > > > > > [image: rg] > <https://linkprotect.cudasvc.com/url?a=https%3a%2f%2fwww.redpointglobal.com%2f&c=E,1,KHzEvVkENwL6T7EFSxGICR_CFo-HpPU51sD4bZnFFKroXGHPfKIJx5Yboyg3w7HYrEBrKNGABSt21fLnbNKQxSIVCglyWQafTQWNFsckAdACQLZKvHNhrqm_&typo=1> > > *John Lilley * > > *Chief Architect, Redpoint Global Inc. * > > 888 Worcester Street, Suite 200 Wellesley, MA 02482 > <https://www.google.com/maps/search/888+Worcester+Street,+Suite+200+Wellesley,+MA+02482?entry=gmail&source=g> > > *M: *+1 7209385761 <+1%207209385761> | john.lil...@redpointglobal.com > > *From:* Clebert Suconic <clebert.suco...@gmail.com> > *Sent:* Friday, September 30, 2022 6:12 AM > *To:* users@activemq.apache.org > *Subject:* Re: Disabling prefetch > > > > **** [Caution] This email is from an external source. Please use caution > responding, opening attachments or clicking embedded links. **** > > > > BTW closing a consumer to clear the fetched buffer is an anti pattern > either AMQ5 or Artemis. Set no prefetch or any slow consumer option > instead. That would be a waste of network and CPU. > > > > On Fri, Sep 30, 2022 at 4:33 AM Clebert Suconic <clebert.suco...@gmail.com> > wrote: > > > > This is done by setting consumerWindowSize to 0 in your connections. > > > > There a note about slow consumers in the documentation. I’m on the phone > now and I can’t get you a link. If you can’t find it let me know and I > will post it for you. > > > > On Thu, Sep 29, 2022 at 6:13 PM John Lilley < > john.lil...@redpointglobal.com.invalid> wrote: > > Related to my previous post (“Processing only one message”), under AMQ 5 > I’ve had to disable prefetch to prevent a “batch server” from hogging > messages for a while until it is done and closes the consumer/session (at > which point the un-ACKed messages are delivered to other servers). This > was done by decorating the queue name: > > *if *(*disablePrefetch*) { > > *// See https://activemq.apache.org/what-is-the-prefetch-limit-for > <https://activemq.apache.org/what-is-the-prefetch-limit-for> *queueName > = queueName + *"?consumer.prefetchSize=1"*; > } > > > > I am unsure, but I suspect this approach doesn’t work for Artemis. What > should I do instead? Or maybe the answer to my previous post will make > this moot. > > > > Thanks > > john > > > > *John Lilley > <https://linkprotect.cudasvc.com/url?a=https%3a%2f%2fwww.redpointglobal.com%2f&c=E,1,hbQyfJtTMCieiIHykTGmwi6tO8ENrzRddQJGtbFXCn09SaXzIi4bTZ-k2ZKCO8_1ie7GilmyfctL16AHUZuCaG1pRT2EnX88GqNIeVwNBvjfg5oj&typo=1>* > > *Chief Architect, Redpoint Global Inc. > <https://linkprotect.cudasvc.com/url?a=https%3a%2f%2fwww.redpointglobal.com%2f&c=E,1,hbQyfJtTMCieiIHykTGmwi6tO8ENrzRddQJGtbFXCn09SaXzIi4bTZ-k2ZKCO8_1ie7GilmyfctL16AHUZuCaG1pRT2EnX88GqNIeVwNBvjfg5oj&typo=1>* > > 888 Worcester Street, Suite 200 Wellesley, MA 02482 > <https://linkprotect.cudasvc.com/url?a=https%3a%2f%2fwww.redpointglobal.com%2f&c=E,1,hbQyfJtTMCieiIHykTGmwi6tO8ENrzRddQJGtbFXCn09SaXzIi4bTZ-k2ZKCO8_1ie7GilmyfctL16AHUZuCaG1pRT2EnX88GqNIeVwNBvjfg5oj&typo=1> > > *M: +1 7209385761 | john.lil...@redpointglobal.com > <https://linkprotect.cudasvc.com/url?a=https%3a%2f%2fwww.redpointglobal.com%2f&c=E,1,hbQyfJtTMCieiIHykTGmwi6tO8ENrzRddQJGtbFXCn09SaXzIi4bTZ-k2ZKCO8_1ie7GilmyfctL16AHUZuCaG1pRT2EnX88GqNIeVwNBvjfg5oj&typo=1>* > > > PLEASE NOTE: This e-mail from Redpoint Global Inc. (“Redpoint”) is > confidential and is intended solely for the use of the individual(s) to > whom it is addressed. If you believe you received this e-mail in error, > please notify the sender immediately, delete the e-mail from your computer > and do not copy, print or disclose it to anyone else. If you properly > received this e-mail as a customer, partner or vendor of Redpoint, you > should maintain its contents in confidence subject to the terms and > conditions of your agreement(s) with Redpoint. > <https://linkprotect.cudasvc.com/url?a=https%3a%2f%2fwww.redpointglobal.com%2f&c=E,1,hbQyfJtTMCieiIHykTGmwi6tO8ENrzRddQJGtbFXCn09SaXzIi4bTZ-k2ZKCO8_1ie7GilmyfctL16AHUZuCaG1pRT2EnX88GqNIeVwNBvjfg5oj&typo=1> > > -- > <https://linkprotect.cudasvc.com/url?a=https%3a%2f%2fwww.redpointglobal.com%2f&c=E,1,hbQyfJtTMCieiIHykTGmwi6tO8ENrzRddQJGtbFXCn09SaXzIi4bTZ-k2ZKCO8_1ie7GilmyfctL16AHUZuCaG1pRT2EnX88GqNIeVwNBvjfg5oj&typo=1> > > Clebert Suconic > <https://linkprotect.cudasvc.com/url?a=https%3a%2f%2fwww.redpointglobal.com%2f&c=E,1,hbQyfJtTMCieiIHykTGmwi6tO8ENrzRddQJGtbFXCn09SaXzIi4bTZ-k2ZKCO8_1ie7GilmyfctL16AHUZuCaG1pRT2EnX88GqNIeVwNBvjfg5oj&typo=1> > > -- > <https://linkprotect.cudasvc.com/url?a=https%3a%2f%2fwww.redpointglobal.com%2f&c=E,1,hbQyfJtTMCieiIHykTGmwi6tO8ENrzRddQJGtbFXCn09SaXzIi4bTZ-k2ZKCO8_1ie7GilmyfctL16AHUZuCaG1pRT2EnX88GqNIeVwNBvjfg5oj&typo=1> > > Clebert Suconic > <https://linkprotect.cudasvc.com/url?a=https%3a%2f%2fwww.redpointglobal.com%2f&c=E,1,hbQyfJtTMCieiIHykTGmwi6tO8ENrzRddQJGtbFXCn09SaXzIi4bTZ-k2ZKCO8_1ie7GilmyfctL16AHUZuCaG1pRT2EnX88GqNIeVwNBvjfg5oj&typo=1> > > > PLEASE NOTE: This e-mail from Redpoint Global Inc. (“Redpoint”) is > confidential and is intended solely for the use of the individual(s) to > whom it is addressed. If you believe you received this e-mail in error, > please notify the sender immediately, delete the e-mail from your computer > and do not copy, print or disclose it to anyone else. If you properly > received this e-mail as a customer, partner or vendor of Redpoint, you > should maintain its contents in confidence subject to the terms and > conditions of your agreement(s) with Redpoint. > <https://linkprotect.cudasvc.com/url?a=https%3a%2f%2fwww.redpointglobal.com%2f&c=E,1,hbQyfJtTMCieiIHykTGmwi6tO8ENrzRddQJGtbFXCn09SaXzIi4bTZ-k2ZKCO8_1ie7GilmyfctL16AHUZuCaG1pRT2EnX88GqNIeVwNBvjfg5oj&typo=1> > > -- > <https://linkprotect.cudasvc.com/url?a=https%3a%2f%2fwww.redpointglobal.com%2f&c=E,1,hbQyfJtTMCieiIHykTGmwi6tO8ENrzRddQJGtbFXCn09SaXzIi4bTZ-k2ZKCO8_1ie7GilmyfctL16AHUZuCaG1pRT2EnX88GqNIeVwNBvjfg5oj&typo=1> > > Clebert Suconic > <https://linkprotect.cudasvc.com/url?a=https%3a%2f%2fwww.redpointglobal.com%2f&c=E,1,hbQyfJtTMCieiIHykTGmwi6tO8ENrzRddQJGtbFXCn09SaXzIi4bTZ-k2ZKCO8_1ie7GilmyfctL16AHUZuCaG1pRT2EnX88GqNIeVwNBvjfg5oj&typo=1> > > > PLEASE NOTE: This e-mail from Redpoint Global Inc. (“Redpoint”) is > confidential and is intended solely for the use of the individual(s) to > whom it is addressed. If you believe you received this e-mail in error, > please notify the sender immediately, delete the e-mail from your computer > and do not copy, print or disclose it to anyone else. If you properly > received this e-mail as a customer, partner or vendor of Redpoint, you > should maintain its contents in confidence subject to the terms and > conditions of your agreement(s) with Redpoint. > > PLEASE NOTE: This e-mail from Redpoint Global Inc. (“Redpoint”) is > confidential and is intended solely for the use of the individual(s) to > whom it is addressed. If you believe you received this e-mail in error, > please notify the sender immediately, delete the e-mail from your computer > and do not copy, print or disclose it to anyone else. If you properly > received this e-mail as a customer, partner or vendor of Redpoint, you > should maintain its contents in confidence subject to the terms and > conditions of your agreement(s) with Redpoint. > -- Clebert Suconic