Hi Justin, Thanks for the response!
Our use case is something like this. Suppose we have a nice RPC client wrapped around message queues and their services. Some methods take a long time, and we want to report status along the way, so we’ve arranged for such methods to return a “task ID”: String taskID = client.startLongThing(); while (!client.isLongThingFinished(taskID)) { wait, or print progress… } client.getLongThingResult(taskID); The problem we hit is that the long-running tasks are not stateless. They start, execute and finish within the same server process. So the calls to startLongThing(), isLongThingFinished(), and getLongThingResult() must all be serviced by the same process. If we have multiple HA instances of a service running in a Kubernetes cluster, the isLongThingFinished() requests will be handle by a random server that may not know about the task. Do you think that the “message group” attribute is a reasonable approach? In JMS: message.setStringProperty("JMSXGroupID", "grouplabel"); I’ve implemented and tested this and it does seem to work. Do you know of any caveats or cautions? Thanks John [rg] <https://www.redpointglobal.com/> John Lilley Data Management Chief Architect, Redpoint Global Inc. 34 Washington Street, Suite 205 Wellesley Hills, MA 02481 M: +1 7209385761<tel:+1%207209385761> | john.lil...@redpointglobal.com<mailto:john.lil...@redpointglobal.com> From: Justin Bertram <jbert...@apache.org> Sent: Thursday, December 7, 2023 10:56 PM To: users@activemq.apache.org Subject: Re: Is it possible to route message to a specific consumer? *** [Caution] This email is from an external source. Please use caution responding, opening attachments or clicking embedded links. *** > Is there any kind of “consumer affinity” that can be attached to a message, > which directs the broker to select a specific consumer? I may be forgetting something, but I believe the answer to this question is no. The broker is broadly designed to support decoupled, asynchronous messaging where consumers and producers know essentially nothing about each other and the broker just receives messages and makes them available for consumption. Message consumption is fundamentally consumer-driven. The broker itself doesn't choose where the messages go except in some limited sense in particular use-cases. Even in the case of message grouping, the messages are not directed to a specific consumer as much as they are just directed at _just one consumer (i.e. any consumer) at a time_ since the goal is just for the messages to be processed in order. You can add specific properties to specific messages and then JMS consumers can use selectors to either ignore or choose those messages for consumption and in this way you can ensure that certain consumers get certain messages, but both the producer and consumer need to know about the properties. Furthermore, if all the applications use a single queue then they can start interfering with each other. For example, if one application fails to consume its messages then messages will begin accumulating and may prevent other applications from getting their messages since queues are by nature first-in-first-out data structures. I'd need to know more about the specifics of your use-case before I could make further recommendations. Justin On Thu, Dec 7, 2023 at 1:26 PM John Lilley <john.lil...@redpointglobal.com.invalid<mailto:john.lil...@redpointglobal.com.invalid>> wrote: Oooh, maybe I answered my own question: https://activemq.apache.org/components/artemis/documentation/1.0.0/message-grouping.html This looks like what I’m after. Any advice around its use? John [rg]<https://linkprotect.cudasvc.com/url?a=https%3a%2f%2fwww.redpointglobal.com%2f&c=E,1,RLCz7uLdUVWU-4PdO0mzCFR75gph7wgFAJpvnoG5yg55RbBDZxZfAUVZs-ERB9VGZHVUZK6w6h0r3FI5bjkHA50Th_z9pS5huRB5AZIUhxN5nTIQlTbVa2sLLA,,&typo=1> John Lilley Data Management Chief Architect, Redpoint Global Inc. 34 Washington Street, Suite 205 Wellesley Hills, MA 02481 M: +1 7209385761<tel:+1%207209385761> | john.lil...@redpointglobal.com<mailto:john.lil...@redpointglobal.com> From: John Lilley <john.lil...@redpointglobal.com.INVALID<mailto:john.lil...@redpointglobal.com.INVALID>> Sent: Thursday, December 7, 2023 11:58 AM To: users@activemq.apache.org<mailto:users@activemq.apache.org> Subject: Is it possible to route message to a specific consumer? *** [Caution] This email is from an external source. Please use caution responding, opening attachments or clicking embedded links. *** Greetings, We are in the process of transforming our Java-based services into Kubernetes-based microservice swarms with HA topology. So every service will have multiple instances. The good news is, AMQ supports this splendidly, because the message broker is very good about load-balancing between consumers and handling failed consumers. However, we have a few cases of “long running tasks” that a single service instance is responsible for. In those cases, we need to be able to route a request to a specific consumer instance. We could use specially-named queues for each consumer instance, but this seems awkward and hopefully not necessary. Is there any kind of “consumer affinity” that can be attached to a message, which directs the broker to select a specific consumer? If not, other ideas are certainly welcome. We are using OpenJDK 17 This is our maven dependency <dependency> <groupId>org.apache.activemq</groupId> <artifactId>artemis-jms-client-all</artifactId> <version>2.30.0</version> </dependency> Thanks John <https://linkprotect.cudasvc.com/url?a=https%3a%2f%2fwww.redpointglobal.com%2f&c=E,1,PCllWqn1FN806xiChO-uNijPVawTv9Y3krF28r_sBUJsVHuM4SlcKCNVMTp_Qq94AnDC39XAs-pcWHhVnAPvZZRJbL8kXpIdP0TQ85wOYAroxX0px-0h_pKn&typo=1> John Lilley <https://linkprotect.cudasvc.com/url?a=https%3a%2f%2fwww.redpointglobal.com%2f&c=E,1,PCllWqn1FN806xiChO-uNijPVawTv9Y3krF28r_sBUJsVHuM4SlcKCNVMTp_Qq94AnDC39XAs-pcWHhVnAPvZZRJbL8kXpIdP0TQ85wOYAroxX0px-0h_pKn&typo=1> Data Management Chief Architect, Redpoint Global Inc. <https://linkprotect.cudasvc.com/url?a=https%3a%2f%2fwww.redpointglobal.com%2f&c=E,1,PCllWqn1FN806xiChO-uNijPVawTv9Y3krF28r_sBUJsVHuM4SlcKCNVMTp_Qq94AnDC39XAs-pcWHhVnAPvZZRJbL8kXpIdP0TQ85wOYAroxX0px-0h_pKn&typo=1> 34 Washington Street, Suite 205 Wellesley Hills, MA 02481 <https://linkprotect.cudasvc.com/url?a=https%3a%2f%2fwww.redpointglobal.com%2f&c=E,1,PCllWqn1FN806xiChO-uNijPVawTv9Y3krF28r_sBUJsVHuM4SlcKCNVMTp_Qq94AnDC39XAs-pcWHhVnAPvZZRJbL8kXpIdP0TQ85wOYAroxX0px-0h_pKn&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,PCllWqn1FN806xiChO-uNijPVawTv9Y3krF28r_sBUJsVHuM4SlcKCNVMTp_Qq94AnDC39XAs-pcWHhVnAPvZZRJbL8kXpIdP0TQ85wOYAroxX0px-0h_pKn&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,PCllWqn1FN806xiChO-uNijPVawTv9Y3krF28r_sBUJsVHuM4SlcKCNVMTp_Qq94AnDC39XAs-pcWHhVnAPvZZRJbL8kXpIdP0TQ85wOYAroxX0px-0h_pKn&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,PCllWqn1FN806xiChO-uNijPVawTv9Y3krF28r_sBUJsVHuM4SlcKCNVMTp_Qq94AnDC39XAs-pcWHhVnAPvZZRJbL8kXpIdP0TQ85wOYAroxX0px-0h_pKn&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.