Build an Event-Driven Integration
Orders queue in RabbitMQ broker and processes them.Event integrations are designed for reactive workflows triggered by messages from a broker. This quick start demonstrates the complete flow: creating a RabbitMQ message listener, adding an event handler to process messages, and implementing the integration logic executed when a message is received.
Prerequisites
A working WSO2 Integrator environment.
You'll also need a running RabbitMQ instance. Start one with Docker:
docker run -d -p 5672:5672 -p 15672:15672 rabbitmq:4.2-management
Step 1: Create the integration
-
On the project home page, click Create on Cloud.

-
The WSO2 Integrator cloud editor opens in your browser. Add an artifact to your integration, then deploy it to WSO2 Cloud from the Deploy to WSO2 Cloud panel on the right.

Step 2: Add a RabbitMQ event listener
- Select your integration from the project overview canvas.
- Select + Add Artifact in the design canvas.
- Select RabbitMQ under Event Integration.
- Set Host to
localhostand Port to5672(update these if your RabbitMQ instance runs elsewhere). - Set Queue Name to
Orders. - Select Create.


Step 3: Add onMessage event handler
- In the RabbitMQ service design view, select + Add Handler.
- Select onMessage.
- Select Save.


Step 4: Add message processing logic
- Select + inside the resource flow.
- Select Call Function.
- Select printInfo under log.
- Set Msg to
Received order. - Select Save.


Step 5: Run and test the integration
- Select Run.
- The integration starts and listens for messages on the
Ordersqueue. - Open the RabbitMQ Management UI at
http://localhost:15672(default credentials: guest/guest).- Go to Queues → Orders → Publish message, enter any text as the payload, and select Publish message.
- Confirm the integration log displays
Received order.


Step 6: Deploy to WSO2 Cloud
Deploy your integration to WSO2 Cloud. Check Save and deploy.
Source code
View the generated Ballerina code
The steps above generate the following complete, runnable Ballerina program:
import ballerina/log;
import ballerinax/rabbitmq;
listener rabbitmq:Listener rabbitmqListener = new ("localhost", 5672);
service "Orders" on rabbitmqListener {
remote function onMessage(rabbitmq:AnydataMessage message, rabbitmq:Caller caller) returns error? {
do {
log:printInfo("Received order");
} on fail error err {
// handle error
return error("unhandled error", err);
}
}
}
Supported event sources
| Broker | Ballerina Package |
|---|---|
| Apache Kafka | ballerinax/kafka |
| RabbitMQ | ballerinax/rabbitmq |
| MQTT | ballerinax/mqtt |
| Azure Service Bus | ballerinax/azure.servicebus |
| Salesforce | ballerinax/salesforce |
| GitHub Webhooks | ballerinax/github |
Learn more
- Kafka — Consume and produce Kafka messages
- Azure Service Bus — Integrate with Azure Service Bus queues and topics
- RabbitMQ — Full RabbitMQ listener and publisher reference
- MQTT — Handle MQTT messages from IoT and messaging devices
- CDC for PostgreSQL — React to database changes with change data capture