Triggers don't run parallely in clustered IS with single UMS.

We already found out that UMS behaves differently in number of ways compared to Broker & we adapted.

But this one is wicked:

Handling flow services are running parallel even though the triggers are set as “Serial” (in all environments).

The serial processing is respected only within one IS node.
On two nodes we have two „independent“ serial processes (in my example you can see that triggers are taking messages from jms even when another node just took also and called the handling service which is still running).
We have number of integrations where it’s unacceptable (target systems cannot process multiple messages at the same time).

That’s why we are totally stuck with prod 9.9 go-live and sustaining two PROD environments (8.2. and 9.9) is becoming unbearable due to complicated deployments (we develop on 9.9).

We also tried setting JMS_my-channels_EnableDurablePriority to true through the channel called naming/defaultContext which should enable priority publishing and ensure only single-threaded processing across a cluster. It didn’t help either.

to publish messages we use pub.jms:send

Trigger properties :
Topic (Durable Subscriber) - using channel
(no filters or selectors)

Please advise if you can help .
Thank you!

Just checking, if the UM connection as the following setting same in both IS servers.

Client Prefix
A string that identifies the Integration Server to Universal Messaging. If your Integration Server belongs to a cluster, make sure all servers in the cluster use the same client prefix.

please make sure that the ConnectionFactory is NOT configured for Shared Durable if you want serial processing using JMS_my-channels_EnableDurablePriority.
After changing the CF, you then need to delete the Named Objects in Enterprise Manager and then stop/start the JMS alias to recreate them with the correct settings.
Hope this helps.

Hi Jonathan.
I knew you’d have some tip :slight_smile: I was actually sending this email to you then I decided to try Forum first.

I tried this (disabling shared durable), it really does work serial, however everything on that topic runs just on one node. I’d expect to see some load balancing between nodes.

I’m also not sure what could be the consequences of disabling shared durable and we also need some solution for PROD without service interruption.

Connection settings is same on both nodes.
We’re using JMS - doesn’t client prefix only apply to native?

Hi Lukas,

I am facing similar issue. instead of using UM we use IBM MQ, JMS connection.

“Trigger from 2nd node is picking messages from JMS/MQ even though node One just called the handling service which is still running”

Did you find any solution for this.

Thank you,

Akhilesh - none of the issues with UMS were fixed by SAG during our upgrade project so we had to get back to Broker. There were much worse problems than this one. UMS doesn’t support all the features and doesn’t behave same way as Broker when used with JMS… As result of our struggle some improvements are included in the plan for 9.12.
This concrete feature: For Broker it works with both JMS and native, for UMS only with native…
You might need to use some kind of semaphore or dirty solution: just enable trigger only on one machine for scenarios that need to run serially…

Thank you Lukas for your reply.

As i said we are not using Broker or UM. we are using IBM MQ connecting using JNDI/JMS configuration and JMS Trigger. and I am facing the same issue as yours in UM.

“Trigger from 2nd node is picking messages from JMS/MQ even though node One trigger just called the service which is still running”

I did the same thing what you said, disabled the trigger on one node so that records gets picked up only on other node in the cluster.

Any thoughts on, if using IBM MQ instead of Broker/UM.

Thank you,
Akhilesh R