I have recently got the requirement from one of my customers to implement an IDOC to JMS and viceversa interface using distributed destinations. At first sight this seems to be a quite simple requirement to fulfill. However, the JMS adapter will not work properly with distributed destinations unless you apply the correct syntax, in this blog I’ll show you how to do it.
What is a distributed destination?
A distributed destination is a set of destinations (queues or topics) that are accessible as a single, logical, transparent destination to a client.
Why use a distributed destination instead of a standard physical queue?
The answer to that question is simpler than what you should expect, namely for fail-over and load-balancing purposes. Business Services that use distributed destinations are more highly available than business services that use standard destinations because most JMS providers (e.g. SAP WAS) allow load balancing and failover for member destinations of a distributed destination within a cluster. Once properly configured, JMS producers and consumers are able to send and receive messages through the distributed destination. The JMS provider then balances the messaging load across all available members of the distributed destination. When one member becomes unavailable due a server failure, traffic is then redirected towards other available destination members in the set.
The screenshot below shows the configuration as done for a JMS receiver communication channel in the integration directory.
The most important detail to notice here is the syntax used in the JNDI Server Address. t3://<your_jms-server:jms_port>, <your_jms-server:jms_port>
As you can see in the syntax above, you have to name the server node (where the distributed destination lives) and the corresponding ports (where the physical queue’s have been defined).
With this setup any Sender /Receiver JMS adapter will now be able to send and receive messages via distributed queue’s. This scenario is depicted in the figure below.
That concludes the blog for today, many thanks for reading my blog!