I have a similar question to the one posted by msatala. I have a multi-node (e.g. multi-machine) system where each node in the system has the same set of services running on them. The services have jms end points and all of them connect up to one JMS broker. The single JMS broker allows all services of a specific type to share a single queue and thus have some rough load balancing. On top of all of these services I am using JBPM workflows to wire the services together into larger actions of work.
Up to now, all of this has worked pretty well. Unfortunately, I have run into a special case for which I am not sure what the correct solution is. I have a service that I want to use in a workflow that must run on a specific machine, as determined by a service earlier in the same workflow. This new service type is currently setup like all of my others (i.e deployed on all machines and sharing a single queue for load balancing)
My first attempt to fix the problem was to change this one service to use a topic for its input and a queue for its result. I figured that if all of the services of that type got the message but only the one running on the specified machine did the work and returned a result then, while hacky, that would work. Unfortunately, I could not get the service to deploy in this configuration.
My new thought is that I can maybe somehow get this working using a router. However, to do that, I would think that I would need a different queue per host and I am not sure how to do that given my current, single broker configuration.
Is there a better way to accomplish my goal that anyone can suggest? Am I totally going down the wrong path?
Thanks a lot.