2. • IBM Messaging APIs and Servers
• Languages, Wire Formats, and APIs
• Recap of the Key Messaging Features
• Features supported in the different
Messaging APIs
Agenda
4. IBM Messaging
• IBM MQ
• Enterprise & hybrid messaging
• Ideal for inter-cloud communication, cloud ingress/egress
• Deployable anywhere that can host VMs or containers
• MessageHub
• Bluemix message streaming service based on Apache Kafka
• Ideal for micro-service architectures
• Streaming & real-time analytics
• MQ Light Development Server
• Ideal for rapid development of nodejs, Ruby, Java apps
• Simple messaging interface designed with language specific idioms
• Develop on Windows/Linux/Mac, deploy against MQ or MessageHub
• MessageSight and Watson IoT Platform
• Internet of Things platforms
• Connect huge numbers of devices
• Well suited to low-bandwidth networks
31. Wire Formats
MQ Wire Format
(& Local Bindings)
Languages/
Runtimes
MQTT HTTP AMQP 1.0
Cobol
PL/1
VB
C++
MQI XMS
MQ Object
Oriented
WCF JMS MQTT
Languages, Wire Formats, and APIs
HTTP MQ LightMQ HTTP MQ Light
APIs
32. Wire Formats
MQ Wire Format
(& Local Bindings)
Languages/
Runtimes
MQTT HTTP AMQP 1.0
Cobol
PL/1
VB
C++
Perl
MQI XMS
MQ Object
Oriented
WCF JMS MQTT
Languages, Wire Formats, and APIs
HTTP MQ LightMQ HTTP MQ Light
APIs
33. Wire Formats
MQ Wire Format
(& Local Bindings)
Languages/
Runtimes
MQTT HTTP AMQP 1.0
Cobol
PL/1
VB
C++
Perl
C
MQI XMS
MQ Object
Oriented
WCF JMS MQTT
Languages, Wire Formats, and APIs
HTTP MQ LightMQ HTTP MQ Light
APIs
34. Wire Formats
MQ Wire Format
(& Local Bindings)
Languages/
Runtimes
MQTT HTTP AMQP 1.0
Cobol
PL/1
VB
C++
Perl
C
ActiveX
MQI XMS
MQ Object
Oriented
WCF JMS MQTT
Languages, Wire Formats, and APIs
HTTP MQ LightMQ HTTP MQ Light
APIs
35. Wire Formats
MQ Wire Format
(& Local Bindings)
Languages/
Runtimes
MQTT HTTP AMQP 1.0
Cobol
PL/1
VB
C++
Perl
C
ActiveX
WCF
MQI XMS
MQ Object
Oriented
WCF JMS MQTT
Languages, Wire Formats, and APIs
HTTP MQ LightMQ HTTP MQ Light
APIs
36. Wire Formats
MQ Wire Format
(& Local Bindings)
Languages/
Runtimes
MQTT HTTP AMQP 1.0
Cobol
PL/1
VB
C++
Perl
C
ActiveX
WCF
Java
MQI XMS
MQ Object
Oriented
WCF JMS MQTT
Languages, Wire Formats, and APIs
HTTP MQ LightMQ HTTP MQ Light
APIs
37. Wire Formats
MQ Wire Format
(& Local Bindings)
Languages/
Runtimes
MQTT HTTP AMQP 1.0
Cobol
PL/1
VB
C++
Perl
C
ActiveX
WCF
Java
.Net
MQI XMS
MQ Object
Oriented
WCF JMS MQTT
Languages, Wire Formats, and APIs
HTTP MQ LightMQ HTTP MQ Light
APIs
38. Wire Formats
MQ Wire Format
(& Local Bindings)
Languages/
Runtimes
MQTT HTTP AMQP 1.0
Cobol
PL/1
VB
C++
Perl
C
ActiveX
WCF
Java
.Net
MQI XMS
MQ Object
Oriented
WCF JMS MQTT
C#
Languages, Wire Formats, and APIs
HTTP MQ LightMQ HTTP MQ Light
APIs
39. Wire Formats
MQ Wire Format
(& Local Bindings)
Languages/
Runtimes
MQTT HTTP AMQP 1.0
Cobol
PL/1
VB
C++
Perl
C
ActiveX
WCF
Java
.Net Ruby
MQI XMS
MQ Object
Oriented
WCF JMS MQTT
C#
Languages, Wire Formats, and APIs
HTTP MQ LightMQ HTTP MQ Light
APIs
40. Wire Formats
MQ Wire Format
(& Local Bindings)
Languages/
Runtimes
MQTT HTTP AMQP 1.0
Cobol
PL/1
VB
C++
Perl
C
ActiveX
WCF
Java
.Net
nodejs
Ruby
MQI XMS
MQ Object
Oriented
WCF JMS MQTT
C#
Languages, Wire Formats, and APIs
HTTP MQ LightMQ HTTP MQ Light
APIs
41. Wire Formats
MQ Wire Format
(& Local Bindings)
APIs
Languages/
Runtimes
MQTT HTTP AMQP 1.0
C
MQI XMS
MQ Object
Oriented
WCF JMS HTTPMQTT MQ LightMQ HTTP MQ Light
Languages, Wire Formats, and APIs
Cobol
PL/1
VB
C++
Perl ActiveX
WCF
Java
.Net
nodejs
Ruby
C#
42. Wire Formats
MQ Wire Format
(& Local Bindings)
APIs
Languages/
Runtimes
MQTT HTTP AMQP 1.0
MQI XMS
MQ Object
Oriented
WCF JMS HTTPMQTT MQ Light
Native C++ is now
stabilised.
Recommendations
are XMS or the C MQI
MQ HTTP MQ Light
Languages, Wire Formats, and APIs
Cobol
PL/1
VB
C++
Perl
C
ActiveX
WCF
Java
.Net
nodejs
Ruby
C#
43. Wire Formats
MQ Wire Format
(& Local Bindings)
APIs
Languages/
Runtimes
MQTT HTTP AMQP 1.0
Base Java is now
stabilised. JMS is the
recommended MQ-
Java interface
MQI XMS
MQ Object
Oriented
(Base Java)
WCF JMS HTTPMQTT MQ LightMQ HTTP MQ Light
Languages, Wire Formats, and APIs
Cobol
PL/1
VB
C++
Perl
C
ActiveX
WCF
Java
.Net
nodejs
Ruby
C#
45. Wire Formats
MQ Wire Format
(& Local Bindings)
APIs
Languages/
Runtimes
MQTT HTTP AMQP 1.0
Cobol
PL/1
VB
C++
Perl
C
ActiveX
WCF
Java
.Net
nodejs
Ruby
C#
MQI XMS
MQ Object
Oriented
WCF JMS HTTPMQTT MQ LightHTTP MQ LightMQ HTTP MQ Light
Languages, Wire Formats, and APIs
46. Wire Formats
C
Cobol
Java
WCF
PL/1
VB .Net
C++
Perl ActiveX
MQ Wire Format
(& Local Bindings)
AMQP 1.0MQTT
nodejs
Ruby
HTTP
APIs
Languages/
Runtimes
C#
MQI XMS
MQ Object
Oriented
WCF JMS HTTPMQTT MQ LightHTTP MQ LightMQ HTTP MQ Light
Languages, Wire Formats, and APIs
47. Recap of Key Messaging
Features
Features supporting in IBM
Messaging APIs
47 3/19/2017
48. Point-to-Point messaging
Publish/Subscribe messaging
Shared subscriptions
Message persistence
Message expiry
Message grouping
Message segmentation
Message selection
Local transactions
Global transactions
HA failover
MQ Messaging Features
Message properties
Asynchronous consume
Message browsing
Qualities of service
• At most once msg delivery
• At least once msg delivery
• Exactly once msg delivery
49. Point-to-Point messaging
Publish/Subscribe messaging
Shared subscriptions
Message persistence
Message expiry
Message grouping
Message segmentation
Message selection
Local transactions
Global transactions
HA failover
MQ Messaging Features
Message properties
Asynchronous consume
Message browsing
Qualities of service
• At most once msg delivery
• At least once msg delivery
• Exactly once msg delivery
50. MQ Wire Format MQTT HTTP AMQP 1.0
~
MQI MQ OO MQTT MQ HTTP MQ Light
~
Examples
C/MQI
strncpy(od.ObjectName, “Q1”, (size_t)MQ_Q_NAME_LENGTH);
MQOPEN(Hcon, &od, O_options,&Hobj, &OpenCode, &Reason);
JMS
destination = session.createQueue(“Q1”);
producer = session.createProducer(destination);
nodejs/
MQ Light
Notes:
• ~ can be used indirectly
at the subscriber
var options = { ttl: “300000” };
client.subscribe(“topic1”, “share1”, options, msgArrivedCallback);
Point-to-point messaging
57. • Ability to put or get multiple messages to/from a destination, either all of them or none
at all
• Messages are hidden from other applications until the transaction is committed.
• If a failure occurs mid-sequence, the transaction is rolled back and none of the
messages are delivered. Other applications are never aware of the messages.
• If everything completes successfully, the messages are made available to other
applications.
Local Transactions
59. Similar to local transactions, but with multiple resources to update e.g.
• Application consumes 5 related messages from a queue and writes them all to a
database
• If everything happens successfully, the messages are guaranteed to be removed
from the queue and written to the database
• If a failure occurs, the messages are rolled back to the queue and none are in the
database
• Potential for a transaction to go in-doubt needing manual resolution
Global Transactions
60. MQ Wire Format MQTT HTTP AMQP 1.0
MQI MQ OO MQTT MQ HTTP MQ Light
Examples
C/MQI
MQBEGIN(Hcon, &bo, &CC, &RC);
// Read from database
pmo.Options = MQPMO_SYNCPOINT;
MQPUT(Hcon, Hobj, &md, &pmo, messlen, buffer, &CC, &RC);
MQCMIT(Hcon, &CC, &RC);
JMS
session = connection.createXASession();
// Read from database, put messages
xaResource = session.getXAResource();
xaResource.prepare(xaId, false);
xaResource.commit(xaId, false);
nodejs/
MQ Light
N/A
Notes:
• Multiple resources coordinated
together (e.g. MQ and
Database)
• In this example the queue
manager is coordinating the
transaction
• Can be coordinated by DB/WAS
etc.
• Can result in in-doubt
transactions if a resource fails
mid-transaction
• In JMS/JEE the container does
the work
• MQ must be configured with the
DB XA libraries
Global Transactions
61. Describes the level of assurance given that a message will be delivered
• At most once delivery
The message might not arrive, but it is guaranteed that you won’t receive duplicates
• At least once delivery
The message will definitely arrive, but you may receive duplicates
• Exactly once delivery
The message is guaranteed to be delivered once and exactly once.
Often considered to be the ‘best’ option but brings with it various additional costs
and complexities
Where are you measuring from?
Quality of Service
68. InterConnect
2017
Thank you
IBM Messaging Developer Centre
developer.ibm.com/messaging
IBM Messaging Youtube
www.youtube.com/IBMmessagingMedia
LinkedIn
ibm.biz/ibmmessaging
Twitter
@IBMmessaging
IBM MQ Facebook
facebook.com/IBMMQ
69. InterConnect
2017
IBM MQ Sessions at a Glance
71
Monday
1:00-1:45pm 6880 IBM MQ Appliance: Messaging in a Box
6894 Messaging APIs
2:00-2:45pm 6879 IBM MQ Advanced
3:15-4:00pm 6882 What’s New in the World of IBM MQ
4:15-5:00pm 3559 Banrisul Bank’s Migration to the MQ Appliance
6904 Help Shape the Future of IBM MQ
6:00-6:20pm 7441 IBM MQ in the Cloud
Tuesday
11:30-12:15pm 1487 IBM MQ Versus Open Source Messaging
1:30-2:15pm 1183 IBM MQ Appliance: Best Practices from the Field
2:30-3:15pm 6881 Unlock the data flowing through the infrastructure
3:45-4:30pm 4555 Allstate’s Experience with the MQ Appliance
4:15-4:35pm 7440 Managed Event Streams
4:45-5:30pm 5214 Managing Loyalty Programs with IBM MQ
6895 IBM MQ for z/OS: The Latest and Greatest
Wednesday
8:00-8:45am 2699 IBM MQ for z/OS: Performance Tuning
6885 Deploying IBM MQ into the Cloud
6906 IBM MQ Appliance: Hands-on Lab (8:00-9-45)
10:15-12:00pm 6907 IBM MQ Hybrid Cloud: Hands-on Lab
11:15-12:00pm 6884 Designing MQ for the Cloud Generation
6904 Help Shape the Future of IBM MQ
1:00-1:45pm 6903 Share your Experiences with the IBM MQ Experts
2:00-2:45pm 3695 How Banco Bradesco Manages IBM MQ for z/OS
3:15-4:00pm 6892 Availability and Scalability with MQ Clusters
4:15-5:00pm 6891 Making MQ Resilient across DCs and the Cloud
6893 Keep Out the Bad Guys by Securing MQ
Thursday
8:30-9:15am 6886 Simple, Resilient Messaging with MQ Appliance
9:30-10:15am 6878 You Need MQ Messaging!
6887 Managing MQ Messaging in the Hybrid Cloud
6890 New Tools and Interfaces to Manage IBM MQ
10:30-11:15am 6889 Help! Has Anyone seen my MQ Message?
Find us in the EXPO: Hybrid Integration Booth, Messaging Ped
71. 73 3/19/2017
Notices and disclaimers
continued
Information concerning non-IBM products was obtained from the
suppliers of those products, their published announcements or other
publicly available sources. IBM has not tested those products in
connection with this publication and cannot confirm the accuracy of
performance, compatibility or any other claims related to non-IBM
products. Questions on the capabilities of non-IBM products should be
addressed to the suppliers of those products. IBM does not warrant the
quality of any third-party products, or the ability of any such third-party
products to interoperate with IBM’s products. IBM expressly disclaims
all warranties, expressed or implied, including but not limited to, the
implied warranties of merchantability and fitness for a particular,
purpose.
The provision of the information contained herein is not intended to, and
does not, grant any right or license under any IBM patents, copyrights,
trademarks or other intellectual property right.
IBM, the IBM logo, ibm.com, Aspera®, Bluemix, Blueworks Live, CICS,
Clearcase, Cognos®, DOORS®, Emptoris®, Enterprise Document
Management System™, FASP®, FileNet®, Global Business Services®,
Global Technology Services®, IBM ExperienceOne™, IBM SmartCloud®,
IBM Social Business®, Information on Demand, ILOG, Maximo®,
MQIntegrator®, MQSeries®, Netcool®, OMEGAMON, OpenPower,
PureAnalytics™, PureApplication®, pureCluster™, PureCoverage®,
PureData®, PureExperience®, PureFlex®, pureQuery®, pureScale®,
PureSystems®, QRadar®, Rational®, Rhapsody®, Smarter Commerce®,
SoDA, SPSS, Sterling Commerce®, StoredIQ, Tealeaf®, Tivoli® Trusteer®,
Unica®, urban{code}®, Watson, WebSphere®, Worklight®, X-Force® and
System z® Z/OS, are trademarks of International Business Machines
Corporation, registered in many jurisdictions worldwide. Other product
and service names might be trademarks of IBM or other companies. A
current list of IBM trademarks is available on the Web at "Copyright and
trademark information" at: www.ibm.com/legal/copytrade.shtml.