We have 2 Integration server’s in cluster. We are running on 9.12 IS and 9.12 UM.
Trigger Properties is set to Serial and 1 thread at a time.
Trigger is reading message from Queue , since IS servers are in cluster only one message should be processed at a time which is my understanding. This is not working as expected some times IS will process only one message at a time and some times both the server will process messages at the same time.
Serial Processing only makes sure that the messages are picked up in the correct order.
But it cannot be controlled which IS will pick up the messages.
So it might happen that both ISes are processing messages at the same time when the first message has been acknowledged by the first IS and the second IS picks up the next message before the first one has completed processing the first message.
This has an overview how to configure triggers for different scenarios.
Setting the trigger to serial (1 thread is default and not changeable) is the correct setting for clusters.
The main goal you are looking for is to delay the acknowledgement of the documents until IS has finished the processing for the document.
One option might be to do a publishAndWait in the service invoked by the trigger to another service and the publish a response back after processing is finished. When the first service receives the response and completes its execution the document will be acked to UM marking the next one as available for retrieval.
You may be experiencing a bug. Serial processing like you described should be possible in 9.12. Earlier versions of UM did not support serial processing in a cluster but it is my understanding that this support exists in 9.12.
There’s a section about serial processing in clusters in which the guide specifically states: “Note: Universal Messaging does not support ordered processing for serial triggers when working with a cluster or a non-clustered group of Integration Servers.”
I would refrain from using publishAndWait to achieve the goal of serial processing. It’s a decent work-around but not what it was intended for and it can easily fall apart if you introduce additional publishers or subscribers.
Worse comes to worst, you can suspend retrieval of, or simply disable, the trigger in one of your clustered servers. However, this basic functionality should exist in 9.12 so please check the latest fixes and if there’s no mention of this issue on the latest fixes, submit a ticket to Software AG support.