Sometimes it's efficacious to attach a pipeline unconditionally to the Party's On Client Receive in a Service Connector that uses the SetProperty step to always set the Semantic to "Request" even if the Messaging Pattern in the connector is already set to Request-Reply.
Why would you do that? Well, if the message came from a Client Connector the Semantic is likely already set correctly so this doesn't really do anything.. But if the message came from an Adapter or Pipeline that has published the message as Multicast then this will ensure the the Service Connector sends the message to the target service. Recall that a Service Connector with a Request-Reply message pattern will consume a Multicast message but will not pass it on because a Multicast Semantic maps to Datagram Messaging Pattern and a Request .Semantic maps to a Reques-Reply Messaging Pattern.
This pattern is also very good for asynch peel off and notifications in a Client Connector. You can publish Multicast in the Client Connector and go about your business without blocking. The Service Connector Party will correct the Semantic for it's Messaging Pattern and away you go!
Now Ideally, the target service you're peeling off to would be using IsOneWay=true so you wouldn't have to mess with such things but the fact is most services are Request-Reply and you don't always control the code.
Using this pattern lets you deal with synchronous services in an asynch manner and not block the publisher which is ideal for doing such things as logging or business activity monitoring.
You need to be a member of Neuron ESB User Network to add comments!
Join Neuron ESB User Network