Problem in receiving JMS message from Queue with multiple consumers

Hello,

We have 3 Integration Servers and a common Universal Messaging setup.

All 3 IS have a flow service “sendTraceWM” which sends JMS message to a common JMS Queue “Queue1” in Universal Messaging.

In all 3 IS, the message is being received by a JMS trigger which is subscribed to the common queue.

So basically, the queue has 3 consumers.

The objective is that JMS Message should be consumed by the consumer JMS Trigger of same server whose sendTraceWM service produced the message.

In order to differentiate between the consumers, we introduced a filter in the JMS trigger on the server alias present in the incoming JMS message.

The problem is some messages are being received and some are not.

The question is: in case of the filter condition in a consumer trigger not matching with the JMS message, is the document in the queue removed with the error ‘No matching Routing Rule found’ or will it be available in the queue for the other JMS consumers to process ?

The answer to your question is conditional, so I need more info -

  1. Are you using a Provider filter or Local filter, on the triggers?

  2. How are you saying the following? Just by looking for a “No condition matches…” log message?

KM

1 Like

Hello Kasi,

We are using Local filter on the triggers.

To answer your 2nd question, it is the error which we see in the server.log of Integration Server during service is being executed. It is like below:
“JMS Trigger CustomPackage.trigger:defaultJMSTrigger is rejecting message ID:e82a9c90-fd15-11ec-a533-00000000006e. No matching Routing Rule found.”

Thanks and Regards
Ajay Singh Thakur

Seems like a syntax issue with the filters, where you may not have enclosed the string values in single quotes (for example, myString < ‘ABC’).
Review the examples on page 85 here, and correct them accordingly (link).

KM

Hi

Also, messages will be discarded from the JMS provider if the condition does not match.

Can you share the objective of what this technical approach is attempting to do? You mention “objective” of single subscriber getting the message, but that seems to me to be a technical aspect of a design approach (the how), rather than the why. I ask because perhaps there is another way to achieve what is desired rather than circumventing the messaging infrastructure–the 3 IS instances are all presumably acting as a logically single client. But this process is trying to treat them as individuals.

This sentense seem to me we’re trying achieve something technically possible and practically questionable. So, it perhaps can be done, and there’s better way to do it instead.

I’d use local pub/sub instead. Doesn’t even need to involve UM.