Advertisement
Advertisement

More Related Content

Similar to Polyglot Messaging with Apache ActiveMQ(20)

Advertisement

More from Christian Posta(20)

Advertisement

Polyglot Messaging with Apache ActiveMQ

  1. Polyglot messaging with Apache ActiveMQ Christian Posta Principal Consultant and Architect 11/09/13 1
  2. Agenda •  Polyglot messaging •  Changing landscapes •  Apache ActiveMQ •  •  •  STOMP MQTT Network of Brokers •  Large-scale management •  Questions? 2
  3. 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
  4. Polyglot messaging 4 4
  5. Polyglot Messaging?! adjective: “knowing or using several languages” 5
  6. Messaging Message Broker P C C Message C 6
  7. Integration? 7
  8. Why is integration hard? •  Off the shelf? Home Grown? Acquisition? •  Platforms •  Protocols / Data Formats •  Data Formats •  Timing •  Organizational mismatch 8
  9. Integration Options •  Batch file transfers •  Shared Database •  RPC •  Messaging 9
  10. Why messaging? •  •  •  •  •  10 Asynchronous architectures Reliable message passing Loose coupling Heterogeneous integration Real-time data
  11. Changing landscapes 11 11
  12. Example of Distributed Application Integration Head Office STORE Broker Clusters 24 houra shop shop outlet STORE 12 STORE
  13. 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
  14. M2M Deployments Arrival Airport 1 Connecting Things •  mobile devices •  meters •  industrial controls •  smart buildings •  asset tracking •  traffic control •  monitors •  sensors •  actuators 14 Broker Clusters
  15. Apache ActiveMQ 15 15
  16. 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
  17. Broker Architecture 17
  18. Broker Architecture 18
  19. Connectivity: Transports •  •  •  •  •  •  19 TCP, NIO UDP SSL, SSL+NIO VM HTTP WebSockets
  20. Connectivity: Protocols •  •  •  •  20 OpenWire STOMP 1.0, 1.1, 1.2 MQTT 3.1 AMQP 1.0
  21. STOMP 21 21
  22. STOMP – what it is? •  http://stomp.github.com •  Simple Text Orientated Messaging Protocol •  HTTP for the messaging realm
  23. 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
  24. STOMP Connect CONNECT! login: ceposta! passcode: ActiveMQRocks! ! ^@!
  25. 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>! ^@!
  26. STOMP Subscribe SUBSCRIBE! destination: /queue/order.books! ! ^@!
  27. 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
  28. MQTT 28 28
  29. MQTT •  http://mqtt.org/ - MQ Telemetry Transport •  Developed by IBM for embedded devices telemetry •  IoT (Internet of Things) protocol •  Efficient binary protocol 29
  30. MQTT Features •  Low bandwidth •  Smallest frame 2 bytes •  Unreliable networks •  Small footprint •  Example frames •  •  •  •  CONNECT PUBLISH SUBSCRIBE PINGREQ/PINGRESP •  DISCONNECT 30
  31. 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
  32. 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
  33. Network of brokers 33 33
  34. Store and Forward Local Broker 34 Remote Broker
  35. Store and Forward 35
  36. Store and Forward 36
  37. Example retail topology Head Office STORE Broker Clusters 24 houra shop shop outlet STORE 37 STORE
  38. Large-scale management 38 38
  39. Fuse Fabric 39 39
  40. Fuse Fabric 40
  41. Fuse Fabric 41
  42. HawtIO 42 42
  43. Old Web Console 43
  44. 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
  45. 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. 46
  47. 47
  48. 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
  49. Questions? 49 49
  50. Questions? •  Forums, Mailing list, Stackoverflow •  ceposta@apache.org •  christian@redhat.com 50
Advertisement