How to deal with stuck EOIO messages in the XI 3.0 Adapter Framework
Asynchronous message can be delivered with a guaranteed order. For this purpose you set the quality of service of the messages to exactly once in order (EOIO) and provide a queue name. All messages are delivered in the same sequence that they were sent from the sender system. For that reason a sequential number is assigned to the message.
When a message runs on an error during the processing, all other messages in the same queue will not be processed until the error is fixed or the erroneous message is cancelled from processing.
The status of the messages in the message monitoring of the adapter framework is Holding.
If you want to fix the problem it is necessary to find the message which blocks the queue. If there are a huge number of messages in your system you search for the lowest sequential number in the queue.
If you know the name of the queue that is stuck, you can add the queue name as additional filter criteria. Click on Show Additional Criteria:
Enter the queue name to the field Conversation ID and set the parameter Quality of Service to Exactly Once in Order:
To be able to see the sequential numbers in the message monitor, you configure the table columns:
Add Conversation Id (that is the queue name) and Sequential Number to the table columns:
Scroll the window right to see the new columns. Sort the sequential number ascending (the upper triangle):
Now the erroneous message is the first message in the display. You can look at the error reason, try to fix the problem and resend or cancel the message to release the queue.
After you have resent or cancelled the message all other message will be processed immediately. You have of course to make sure, that the next message in sequence does not run on error too.