Polyglot Messaging with Apache ActiveMQ

Preview:

DESCRIPTION

Messaging is the backbone of many top enterprises. It affords reliable, asynchronous data passing to achieve loosely coupled, highly scalable distributed systems. As enterprises large and small become more interconnected, demand for remote and limited devices to be integrated with enterprise systems is surging. Come see how the most widely used, open-source messaging broker, Apache ActiveMQ, fits nicely and how it supports polyglot messaging.

Citation preview

1 1

Polyglot messaging with

Apache ActiveMQ

Christian Posta Principal Consultant and Architect 11/09/13

2

•  Polyglot messaging

•  Changing landscapes

•  Apache ActiveMQ •  STOMP

•  MQTT

•  Network of Brokers

•  Large-scale management

•  Questions?

Agenda

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

4 4

Polyglot messaging

5

Polyglot Messaging?!

adjective: “knowing or using several languages”

6

Messaging

P

C

Broker C

C

Message

Message

7

Integration?

8

•  Off the shelf? Home Grown? Acquisition? •  Platforms •  Protocols / Data Formats •  Data Formats •  Timing •  Organizational mismatch

Why is integration hard?

9

•  Batch file transfers •  Shared Database •  RPC •  Messaging

Integration Options

10

•  Asynchronous architectures

•  Reliable message passing

•  Loose coupling

•  Heterogeneous integration

•  Real-time data

Why messaging?

11 11

Changing landscapes

12

Head Office

Example of Distributed Application Integration

STORE

STORE

outlet

shop

24 houra

STORE

shop

Broker Clusters

13

Ingestion for BigData Architecture

Broker Cluster

Broker Cluster

Web Servers

Web Servers

Web Servers

Web Servers

Camel HTTP Log

Reader

Camel HTTP Log

Reader

Camel HTTP Log

Reader

Camel HTTP Log

Reader

ESB

ESB

Camel HBase/HDFS

Camel Hbase/HDFS

HDFS

14

M2M Deployments

Connecting Things

• mobile devices • meters •  industrial controls • smart buildings • asset tracking •  traffic control • monitors • sensors • actuators

Broker Clusters

Arrival Airport 1

15 15

Apache ActiveMQ

16

•  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!

Apache ActiveMQ

17

Broker Architecture

18

Broker Architecture

19

•  TCP, NIO

•  UDP

•  SSL, SSL+NIO

•  VM

•  HTTP

•  WebSockets

Connectivity: Transports

20

•  OpenWire

•  STOMP 1.0, 1.1, 1.2

•  MQTT 3.1

•  AMQP 1.0

Connectivity: Protocols

21 21

STOMP

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 •  NIO implementation for better scalability •  SSL for secure communication

<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>

28 28

MQTT

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 •  NIO implementation for better scalability •  SSL for secure communication

<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>

32

33 33

Network of brokers

34

Local Broker Remote Broker

Store and Forward

35

Store and Forward

36

Store and Forward

37

Head Office

Example retail topology

STORE

STORE

outlet

shop

24 houra

STORE

shop

Broker Clusters

38 38

Large-scale management

39 39

Fuse Fabric

40

Fuse Fabric

41

Fuse Fabric

42 42

HawtIO

43

Old Web Console

44

•  Manage integration infrastructure from one dashboard •  Customizable •  Plugins •  Camel •  ActiveMQ •  Fabric •  Infinispan •  Tomcat •  Many others!

•  Visualizations •  One dashboard to rule them all

HawtIO – http://hawt.io

45

•  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

HawtIO – http://hawt.io

46

47

48

•  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

Wrap up

49 49

Questions?

50

•  Forums, Mailing list, Stackoverflow

•  ceposta@apache.org

•  christian@redhat.com

Questions?

Recommended