integrating mq protocols with wso2 esb 4.9.0 (rabbitmq, mqtt, kafka)

21
Integrating MQ Protocols WSO2 Enterprise Service Bus 4.9.0 Jagath Ariyarathne Technical Lead Kevin Rathnasekara Software Engineer

Upload: wso2-inc

Post on 13-Apr-2017

1.455 views

Category:

Technology


15 download

TRANSCRIPT

Page 1: Integrating MQ Protocols with WSO2 ESB 4.9.0 (RabbitMQ, MQTT, Kafka)

Integrating MQ Protocols WSO2 Enterprise Service Bus 4.9.0

Jagath AriyarathneTechnical Lead

Kevin RathnasekaraSoftware Engineer

Page 2: Integrating MQ Protocols with WSO2 ESB 4.9.0 (RabbitMQ, MQTT, Kafka)

Agenda

o Enterprise Messaging

o Messaging support in WSO2 ESB

o What’s new in ESB 4.9.0 with MQ protocols

o RabbitMQ

o Kafka

o MQTT

o Demo on MQTT Integration

Page 3: Integrating MQ Protocols with WSO2 ESB 4.9.0 (RabbitMQ, MQTT, Kafka)

Enterprise Messaging

o What is messaging?Communication between two applications with high-speed, asynchronousand reliable delivery

o Why we need messagingo Remote communicationo Platform/language integrationo Asynchronous communicationo Reliable communication

Page 4: Integrating MQ Protocols with WSO2 ESB 4.9.0 (RabbitMQ, MQTT, Kafka)

Enterprise Messaging cont...

o Achieved by message queues

o Enterprise messaging middleware systemso ActiveMQo IBM WebSphereo RabbitMQo JBoss Messaging

Producer (Sender)

Message Queue

Consumer(Receiver)

Page 5: Integrating MQ Protocols with WSO2 ESB 4.9.0 (RabbitMQ, MQTT, Kafka)

Enterprise Messaging with WSO2 ESB

o RabbitMQ, Kafka and MQTT transports

Page 6: Integrating MQ Protocols with WSO2 ESB 4.9.0 (RabbitMQ, MQTT, Kafka)

RabbitMQ with WSO2 ESB

o In-built RabbitMQ transport, easy to configure

o Automatic connection recovery

o All content-types are now supported

o Synchronized request-response support

o Introduced the new feature rich inbound endpoint for RabbitMQ

o Added the SSL support for RabbitMQ inbound/transport

Page 7: Integrating MQ Protocols with WSO2 ESB 4.9.0 (RabbitMQ, MQTT, Kafka)

RabbitMQ with WSO2 ESB cont...

o RabbitMQ as a transport in ESB 4.9.0

Page 8: Integrating MQ Protocols with WSO2 ESB 4.9.0 (RabbitMQ, MQTT, Kafka)

RabbitMQ with WSO2 ESB cont...

o Enable RabbitMQ Transport (axis2.xml)o Transport Receiver

<transportReceiver name="rabbitmq" class="org.apache.axis2.transport.rabbitmq.RabbitMQListener">

<parameter name="AMQPConnectionFactory" locked="false">

<parameter name="rabbitmq.server.host.name" locked="false">192.168.0.3</parameter>

<parameter name="rabbitmq.server.port" locked="false">5672</parameter>

<parameter name="rabbitmq.server.user.name" locked="false">user</parameter>

<parameter name="rabbitmq.server.password" locked="false">abc123</parameter>

</parameter>

</transportReceiver>

o Transport Sender

<transportSender name="rabbitmq" class="org.apache.axis2.transport.rabbitmq.RabbitMQSender"/>

Page 9: Integrating MQ Protocols with WSO2 ESB 4.9.0 (RabbitMQ, MQTT, Kafka)

RabbitMQ with WSO2 ESB cont...

o Use RabbitMQ transport in a Proxy<proxy xmlns="http://ws.apache.org/ns/synapse" name="AMQPProxy" transports="rabbitmq" statistics="disable" trace="disable"

startOnLoad="true">

<target>

<inSequence>

<log level="full"/>

<property name="OUT_ONLY" value="true"/>

<property name="FORCE_SC_ACCEPTED" value="true" scope="axis2"/>

</inSequence>

<endpoint>

<address

uri="rabbitmq:/AMQPProxy?rabbitmq.server.host.name=192.168.0.3&rabbitmq.server.port=5672&rabbitmq.server.user.

name=user&rabbitmq.server.password=abc123&rabbitmq.queue.name=queue2&rabbitmq.exchange.name=exchange2"/>

</endpoint>

</target>

<parameter name="rabbitmq.queue.name">queue1</parameter>

<parameter name="rabbitmq.exchange.name">exchange1</parameter>

<parameter name="rabbitmq.connection.factory">AMQPConnectionFactory</parameter>

<description></description>

</proxy>

Page 10: Integrating MQ Protocols with WSO2 ESB 4.9.0 (RabbitMQ, MQTT, Kafka)

RabbitMQ with WSO2 ESB cont...

o Sample configuration for RabbitMQ Inbound<inboundEndpoint xmlns="http://ws.apache.org/ns/synapse" name="RabbitMQConsumer" sequence="amqpSeq" onError="amqpErrorSeq" protocol="

rabbitmq" suspend="false">

<parameters>

<parameter name="sequential">true</parameter>

<parameter name="coordination">true</parameter>

<parameter name="rabbitmq.connection.factory">AMQPConnectionFactory</parameter>

<parameter name="rabbitmq.server.host.name">localhost</parameter>

<parameter name="rabbitmq.server.port">5672</parameter>

<parameter name="rabbitmq.server.user.name">guest</parameter>

<parameter name="rabbitmq.server.password">guest</parameter>

<parameter name="rabbitmq.queue.name">queue</parameter>

<parameter name="rabbitmq.exchange.name">exchange</parameter>

<parameter name="rabbitmq.connection.ssl.enabled">false</parameter>

</parameters>

</inboundEndpoint>

Page 11: Integrating MQ Protocols with WSO2 ESB 4.9.0 (RabbitMQ, MQTT, Kafka)

RabbitMQ with WSO2 ESB cont...

Page 12: Integrating MQ Protocols with WSO2 ESB 4.9.0 (RabbitMQ, MQTT, Kafka)

Kafka with WSO2 ESB

o Kafka inbound endpoint to connect to inbound connections<inboundEndpoint xmlns="http://ws.apache.org/ns/synapse"

name="KafkaListenerEP"

sequence="requestHandlerSeq"

onError="inFaulte"

protocol="kafka"

suspend="false">

<parameters>

<parameter name="interval">100</parameter>

<parameter name="coordination">true</parameter>

<parameter name="sequential">true</parameter>

<parameter name="zookeeper.connect">localhost:2181</parameter>

<parameter name="consumer.type">highlevel</parameter>

<parameter name="content.type">application/xml</parameter>

<parameter name="topics">test,sampletest</parameter>

<parameter name="group.id">test-group</parameter>

</parameters>

</inboundEndpoint>

Page 13: Integrating MQ Protocols with WSO2 ESB 4.9.0 (RabbitMQ, MQTT, Kafka)

Kafka with WSO2 ESB cont...

o Kafka connector for outbound communication<proxy xmlns="http://ws.apache.org/ns/synapse"

name="KafkaTransport"

transports="https http"

startOnLoad="true"

trace="disable">

<description/>

<target>

<inSequence>

<kafkaTransport.init>

<brokerList>localhost:9092</brokerList>

</kafkaTransport.init>

<kafkaTransport.publishMessages>

<topic>test</topic>

</kafkaTransport.publishMessages>

</inSequence>

</target>

</proxy>

Page 14: Integrating MQ Protocols with WSO2 ESB 4.9.0 (RabbitMQ, MQTT, Kafka)

Kafka with WSO2 ESB cont...

Page 15: Integrating MQ Protocols with WSO2 ESB 4.9.0 (RabbitMQ, MQTT, Kafka)

MQTT with WSO2 ESB

o Improved MQTT transport(axis2 transport)

o transport sender

o transport listener

o MQTT inbound endpoint for more versatile integrations

Page 16: Integrating MQ Protocols with WSO2 ESB 4.9.0 (RabbitMQ, MQTT, Kafka)

MQTT with WSO2 ESB cont...

Page 17: Integrating MQ Protocols with WSO2 ESB 4.9.0 (RabbitMQ, MQTT, Kafka)

MQTT with WSO2 ESB

o Inbound communication with Axis2 transport<transportReceiver name="mqtt" class="org.apache.axis2.transport.mqtt.MqttListener">

<parameter locked="false" name="mqttConFactory">

<parameter locked="false" name="mqtt.server.host.name">localhost</parameter>

<parameter name="mqtt.connection.factory">mqttConFactory</parameter>

<parameter locked="false" name="mqtt.server.port">1883</parameter>

<parameter locked="false" name="mqtt.client.id">client-id-1234</parameter>

<parameter locked="false" name="mqtt.topic.name">esb.test</parameter>

</parameter>

</transportReceiver>

<proxy xmlns="http://ws.apache.org/ns/synapse"

name="SampleProxy"

transports="mqtt"

startOnLoad="true"

trace="disable">

Page 18: Integrating MQ Protocols with WSO2 ESB 4.9.0 (RabbitMQ, MQTT, Kafka)

MQTT with WSO2 ESB cont...

Outbound communication with Axis2 transport

o Axis2.xml configuration

<transportSender name="mqtt" class="org.apache.axis2.transport.mqtt.MqttSender"/>

o Sample Sequence

<sequence name="dispatchSeq" onError="fault">

<log level="full"/>

<send>

<endpoint>

<address uri="mqtt:/sender?mqtt.server.host.name=localhost&amp;mqtt.server.port=1884&amp;mqtt.client.id=mqtt.sender.id&amp;mqtt.topic.name=esb.publish.topic&amp;mqtt.subscription.qos=2&amp;mqtt.blocking.sender=true"/>

</endpoint>

</send>

<drop/>

</sequence>

Page 19: Integrating MQ Protocols with WSO2 ESB 4.9.0 (RabbitMQ, MQTT, Kafka)

Demo

A

B