Polyglot messaging with Apache ActiveMQ Christian Posta Principal Consultant and Architect 11/09/13 1
Agenda •  Polyglot messaging •  Changing landscapes •  Apache ActiveMQ •  •  •  STOMP MQTT Network of Brokers •  Large-scale management •  Questions? 2
Your speaker Christian Posta Blog: http://christianposta.com/blog Twitter: @christianposta Email: christian@redhat.com ceposta@apache.org •  Principal Consultant and Architect at Red Hat (FuseSource) •  Based in Phoenix, AZ •  Committer on Apache Camel, ActiveMQ, Apollo •  PMC on ActiveMQ •  Author: Essential Camel Components DZone Refcard 3
Polyglot messaging 4 4
Polyglot Messaging?! adjective: “knowing or using several languages” 5
Messaging Message Broker P C C Message C 6
Integration? 7
Why is integration hard? •  Off the shelf? Home Grown? Acquisition? •  Platforms •  Protocols / Data Formats •  Data Formats •  Timing •  Organizational mismatch 8
Integration Options •  Batch file transfers •  Shared Database •  RPC •  Messaging 9
Why messaging? •  •  •  •  •  10 Asynchronous architectures Reliable message passing Loose coupling Heterogeneous integration Real-time data
Changing landscapes 11 11
Example of Distributed Application Integration Head Office STORE Broker Clusters 24 houra shop shop outlet STORE 12 STORE
Ingestion for BigData Architecture Broker Cluster Camel HTTP Log Reader ESB Web Servers Camel HBase/HDFS Camel HTTP Log Reader Web Servers Broker Cluster Camel HTTP Log Reader Web Servers Camel Hbase/HDFS Camel HTTP Log Reader Web Servers 13 ESB HDFS
M2M Deployments Arrival Airport 1 Connecting Things •  mobile devices •  meters •  industrial controls •  smart buildings •  asset tracking •  traffic control •  monitors •  sensors •  actuators 14 Broker Clusters
Apache ActiveMQ 15 15
Apache ActiveMQ •  The most widely used open-source messaging broker •  •  •  •  Highly configurable Friendly license (no license fees!) Vibrant community (TLP) Backbone of top enterprises in retail, e-retail, financial services, shipping, many others! 16
Broker Architecture 17
Broker Architecture 18
Connectivity: Transports •  •  •  •  •  •  19 TCP, NIO UDP SSL, SSL+NIO VM HTTP WebSockets
Connectivity: Protocols •  •  •  •  20 OpenWire STOMP 1.0, 1.1, 1.2 MQTT 3.1 AMQP 1.0
STOMP 21 21
STOMP – what it is? •  http://stomp.github.com •  Simple Text Orientated Messaging Protocol •  HTTP for the messaging realm
STOMP •  “Simple!” •  A lot of “polyglot” APIs •  •  •  •  •  Ruby - https://rubygems.org/gems/stomp Python - https://pypi.python.org/pypi/stompy PHP - http://pecl.php.net/package/stomp JavaScript - http://jmesnil.net/stomp-websocket/doc/ Perl - http://search.cpan.org/dist/Net-STOMP-Client/ •  Implemented •  ActiveMQ •  Apollo •  HornetQ •  RabbitMQ
STOMP Connect CONNECT! login: ceposta! passcode: ActiveMQRocks! ! ^@!
STOMP Sending SEND! destination: /queue/order.books! reply-to: /tempQueue/Christian! correlation-id: 900145! amazonSecurityToken: 1bc2345! amazonCustomerRating: gold! ! <order id=“123” customer=“ceposta”>! <book isbn=“1234” />! <book isbn=“4567” />! </order>! ^@!
STOMP Subscribe SUBSCRIBE! destination: /queue/order.books! ! ^@!
Stomp + ActiveMQ •  Available transports <transportConnectors> <transportConnector name=”stomp" uri=”stomp://0.0.0.0:61613"/> <transportConnector name=”stomp+nio" uri=”stomp+nio://0.0.0.0:61614"/> <transportConnector name=”stomp+ssl" uri=”stomp+ssl://0.0.0.0:61615"/> <transportConnector name=”stomp+nio+ssl" uri=”stomp+nio+ssl://0.0.0.0:61615"/> </transportConnectors> •  NIO implementation for better scalability •  SSL for secure communication
MQTT 28 28
MQTT •  http://mqtt.org/ - MQ Telemetry Transport •  Developed by IBM for embedded devices telemetry •  IoT (Internet of Things) protocol •  Efficient binary protocol 29
MQTT Features •  Low bandwidth •  Smallest frame 2 bytes •  Unreliable networks •  Small footprint •  Example frames •  •  •  •  CONNECT PUBLISH SUBSCRIBE PINGREQ/PINGRESP •  DISCONNECT 30
MQTT •  Publish/subscribe protocol – “topics” “subjects” •  3 QoS Options: •  At Most Once – message loss might occur •  At Least Once – duplicates might occur •  Exactly Once – guaranteed delivery 31
MQTT + ActiveMQ •  Available transports <transportConnectors> <transportConnector name=”mqtt" uri=”mqtt://0.0.0.0:1883"/> <transportConnector name=”mqtt+nio" uri=”mqtt+nio://0.0.0.0:1884"/> <transportConnector name=”mqtt+ssl" uri=”mqtt+ssl://0.0.0.0:1885"/> <transportConnector name=”mqtt+nio+ssl" uri=”mqtt+nio+ssl://0.0.0.0:1886"/> </transportConnectors> •  NIO implementation for better scalability •  SSL for secure communication 32
Network of brokers 33 33
Store and Forward Local Broker 34 Remote Broker
Store and Forward 35
Store and Forward 36
Example retail topology Head Office STORE Broker Clusters 24 houra shop shop outlet STORE 37 STORE
Large-scale management 38 38
Fuse Fabric 39 39
Fuse Fabric 40
Fuse Fabric 41
HawtIO 42 42
Old Web Console 43
HawtIO – http://hawt.io •  •  •  •  •  Manage integration infrastructure from one dashboard Customizable Plugins •  Camel •  ActiveMQ •  Fabric •  Infinispan •  Tomcat •  Many others! Visualizations One dashboard to rule them all 44
HawtIO – http://hawt.io •  Visualization of health •  Access to operations to make changes •  Move messages from DLQ to original destinations •  Visualize Camel routes deployed along with broker •  Send messages •  Real-time metrics 45
46
47
Wrap up •  Checkout the ActiveMQ wiki: http://activemq.apache.org •  Mailing list: users@activemq.apache.org •  My Blog: http://christianposta.com/blog •  Books: ActiveMQ in Action – Dejan Bosanac, Rob Davies Instant ActiveMQ Messaging Application Development – Tim Bish 48
Questions? 49 49
Questions? •  Forums, Mailing list, Stackoverflow •  ceposta@apache.org •  christian@redhat.com 50

Polyglot Messaging with Apache ActiveMQ