SAP Process Integration – RabbitMQ AMQP 0-9-1 integration
AMQP (Advanced Message Queuing Protocol) is an open standard application layer protocol for message-oriented middleware. Advantco AMQP adapter for SAP PI/PO now supports integration with RabbitMQ. The Advantco AMQP adapter allows integration between SAP PI and any AMQP implementation across different platforms without complex deployments. This blog explains how to configure the AMQP channels to send or to receive messages to/from RabbitMQ. To integrate with RabbitMQ through SAP PI, select AMQP 0-9-1 as Message Protocol.
For AMQP 0-9-1, follows the following queue/topic syntax:
- For sender adapter: Assume that the adapter consumes messages from queue Q: In AMQP 0-9-1, to identify a queue, we need declare a binding from an exchange to that queue. There is no other way to directly use the queue name only. The general convention of Queue/Topic is <Exchange Type>://<Exchange Name>/<Routing Key>/<Queue>, for example, if you already have had a Direct exchange P73_Direct that binds to queue P73_Direct_Queue with routing key P73_Direct_Routing, then you can enter direct:// P73_Direct / P73_Direct_Routing /P73_Direct_Queue into the Queue/Topic field, or you can simply enter the queue name (P73_Direct_Queue) into the Queue/Topic field, then the adapter automatically creates a binding from the built-in direct exchange amq.direct to queue P73_Direct_Queue using the queue name as routing key.
- For receiver adapter: Assume that the adapter publishes messages to queue Q: In AMQP 0-9-1, the producers must directly publish messages to the exchange; then the messages are delivered to the target queue via routing key. Assume that the exchange name is E, the routing key is K, so please enter the following into the Queue/Topic field:
– If you want to publish messages to direct exchange: direct://E/K
– If you want to publish messages to topic exchange: topic://E/K
– A fanout exchange routes messages to all of the queues that are bound to it and the routing key is ignored, so if you want to publish messages to fanout exchange: fanout://E
– A headers exchange is designed for routing on multiple attributes that are more easily expressed as message headers than a routing key, so, if you want to send messages to headers exchanges: headers://E