Polyglot Messaging with Apache ActiveMQ
-
Upload
ceposta -
Category
Technology
-
view
1.161 -
download
5
description
Transcript of Polyglot Messaging with Apache ActiveMQ
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: [email protected]
• 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: [email protected]
• 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?