cancel
Showing results for 
Search instead for 
Did you mean: 

EOIO in multiple Receiver Scenario

former_member302683
Discoverer
0 Kudos
1,124

Hi All,
I have a multiple receiver scenario. The Input message is routed to 3 different
receiver systems. I have enabled EOIO in the sender channel.

My requirement is that even if any of the message fails for Receiver 1,
the subsequent messages to the other Receivers also should be blocked.

But for each of the 3 receivers, a separate Serialization Context is created.
Failure of a message for a particular Receiver blocks the other messages of that Receiver alone .
THe messages for other Receivers gets executed as usual.

Can someone advise, how to enable single EOIO queue(Serialization_Context) for all the multiple
Receivers? If a message for a Receiver fails, the subsequent messages to other Receivers also should be
blocked.

Thanks

Accepted Solutions (0)

Answers (5)

Answers (5)

former_member190293
Active Contributor
0 Kudos

Hi Prabu!

Did you try to set Module parameter XMBWS.OrderedEOIOEnabled as described in the given note?

Regards, Evgeniy.

former_member302683
Discoverer
0 Kudos

Tried 'Maintain Order at Runtime' as well. Even then serialization happens only based on Receiver System

former_member190293
Active Contributor
0 Kudos

Hi Prabu!

So it should. When "Maintain Order at Runtime" option is selected, separate EOIO queue is created for messages coming to different interfaces of the selected receiver. And these messages are processed in order you set by placing receiver interfaces. So if you have Receiver system with three interfaces - three messages will be put to separate EOIO queue. For the next message another queue with three messages in it will be created as well. And so on.

Regards, Evgeniy.

former_member302683
Discoverer
0 Kudos

Hi All,

Thanks for your responses. I too was under same assumption. But it is not the case. SequenceID is same for all Receivers. (what is given in the sender channel) , say A_EOIO

But SerializationContext is different for every Receiver (Eg, XI_OUTBOUND_A_EOIO_[Receiver1], XI_OUTBOUND_A_EOIO_[Receiver2]

) and hence the sequencing number for each Receiver.

Also , came across the below note which says, Serialization Context is created based on Queue ID and Receiver Service.

2505543 - Enable ordered EOIO processing of multiple XI messages in one transaction in SOAP sender adapter

"EOIO messages in Adapter Engine are serialized according to their Serialization Context which for XImessages depends on queue ID and receiver information (Party and Service)"

former_member190293
Active Contributor
0 Kudos

Hi Prabu!

As far as I remember, when EOIO Quality of Service is set in sender adapter along with queue name, all the messages are put to the same named queue. And if the delivery fails for one of the messages in that queue, all sub-sequent messages goes to "To be delivered" status until the blocking message is resent or cancelled.

Regards, Evgeniy.

ArielBravo
Active Participant
0 Kudos

Hi Prabu,

Have you tried selecting the checkbox "Maintain Order at Runtime" in your ICO/Receiver Determination?

According to SAP's documentation:

Specify mappings for the defined receiver inbound interfaces and specified cases.

When assigning multiple inbound interfaces, specify the Quality-of-Service:

If multiple inbound interfaces are assigned by the integrated configuration, the messages are forwarded according to the quality of service Exactly Once in Order (EOIO) at runtime. This means that the order in which the inbound interfaces are entered in the integrated configuration determines the order in which the messages are received.

You can change this default by deselecting the Maintain Order at Runtime checkbox. In this case, the quality of service Exactly Once (EO) is used to forward the message to the inbound interfaces.


Bests,

Ariel Bravo Ayala