The document provides an overview and introduction to IBM's MQ Light service on Bluemix. Some key points:
- Bluemix is IBM's cloud platform that allows building, running, and managing applications. It provides services, tools for development and management, and flexible pricing models.
- MQ Light is a messaging service designed for application developers to create responsive and scalable applications. It has a simplified API and supports multiple programming languages.
- The demo section shows how to use the MQ Light service on Bluemix to send and receive messages from Node.js, Java, Ruby, and Python applications. It also integrates with services like Node-RED.
2. Agenda
• Introduction to Bluemix
• Application Messaging
• Introduction to MQ Light Service
• Demo
1
3. IBM Bluemix
2
Bluemix is an open-standards, cloud-based platform for building,
running, and managing applications.
Build your apps, your way
Use the most prominent
compute technologies to
power your app: Cloud
Foundry, Docker, OpenStack.
Extend apps with services
A catalog of IBM, third party,
and open source services
allow the developer to stitch
an application together
quickly.
Scale more than just
instances
Development, monitoring,
deployment, and logging
tools allow the developer to
run and manage the entire
application.
Layered Security
IBM secures the platform and
infrastructure and provides you
with the tools to secure your
apps.
Deploy and manage hybrid
apps seamlessly
Get a seamless dev and
management experience
across a number of hybrid
implementations options.
Flexible Pricing
Try compute options and
services for free and, when
you’re ready, pay only for what
you use. Pay as you go and
subscription models offer
choice and flexibility.
4. Single tenant hardware that’s completely dedicated to you – allowing
you to satisfy regulatory & legal compliance.
Dedicated
Public
Local
• The Bluemix platform and dedicated
runtimes and services sit on SoftLayer
hardware that is dedicated to you
• You still have the ability to connect to all
multi-tenant services in the “public”
catalog
• Integrated to your LDAP for developer
authentication
• Elastic capacity based on your demands.
What it means
Dedicated to you
5. Agenda
• Introduction to Bluemix
• Application Messaging
• Introduction to MQ Light Service
• Demo
4
6. IBM Messaging
Deliver Messaging
Backbone for Enterprise
Focus on traditional MQ
values, rock-solid
enterprise-class service,
ease-of-operation, breadth
of platform coverage,
availability, z/OS
exploitation
Enable Developers to
build more scalable,
responsive applications
Focus on app use cases,
breadth of languages,
ease-of-deployment, micro
services, integration with
developer frameworks
7. MQ Light : Software and Cloud
• Messaging that application developers
will love to use, helping them make
responsive applications that scale easily
• 3 ways to get it:
• Bluemix service
• MQ Light software download
• Statement of Direction for support in MQ
Version 8.
• Open APIs crafted to feel natural in a
growing range of popular languages
• Tooling that makes modular app
development easy
6
8. The journey that got us here
7
Andy
Developer
Iain
Infrastructure
Guy
I want to execute code
without taxing my
Web app processes
My job is run a
communications service
for my customers’ apps
Some
Thing
My Apps Workers
Messaging
Backbone
My Customers’ Apps
9. The journey that got us here…
8
Ruby
Node.js
Python
C
C++
Java
C#
Perl
Go
Clojure
Lua
Erlang Scala
PHP
10. Trend towards cloud native microservices
Development teams
Delivering global scale applications with
unprecedented agility using a
microservices architecture
Challenges developing microservices :
Agility come from “2 pizza” teams operating completely
independently, owning the whole technology stack,
deploying on their own schedules, writing services
that will scale when demand dictates
Cloud messaging delivers :
Self service cloud messaging accessible from any language
Open standards are essential; guaranteeing full stack architects complete freedom
Reactive scaling
The infrastructure must scale up to any conceivable load
Application controlled messaging
Eradicates coordination of configuration changes alongside with new service versions
9
11. Different messaging requirements
Messaging for enterprise central IT
• Support for enterprise language and
frameworks
• XA 2 phase transactions and bulletproof QoS
options eliminates app compensation logic.
• Translation between different platform types
• Admin policy controlled behaviour
• Comprehensive configuration options for fine
grained control
Messaging for microservice devs
• Reactive scaling
• Open and standard protocols
• Completely self service
• Application controlled behaviour
• Ability to quickly unit-test microservices
• Minimal concepts for “full stack architects”
17. Tooling to assist development
• Used to answer questions like :
• Where did this message come from?
• Where did that message go?
• What messages has my app consumed?
16
18. 17
MQ Light Messaging Model – Send Messages
Applications send messages to a topic.
A topic is an address in the topic space
either flat or arranged hierarchically.
1. Send (‘/test/a’, “Hello”);
2. Send (‘/test/a’, “World!”);
Topic Address Space
Sender application
19. 18
MQ Light Messaging Model – Simple Receive
•Applications receive messages by creating a destination with a pattern
which matches the topics they are interested in.
•Pattern matching scheme based on WMQ.
1. Send (‘/test/a’, “Hello”);
2. Send (‘/test/a’, “World!”);
1. Hello
2. World!
Topic Address Space
Sender application
DESTINATION
Pattern=/test/a
20. 19
MQ Light Messaging Model – Pub/Sub
•Multiple destinations can be created which match the same topic
•Pub/Sub style.
DESTINATION
1. Send (‘/test/a’, “Hello”);
2. Send (‘/test/a’, “World!”);
1. Hello
2. World!
1. Hello
2. World!
Topic Address Space
Sender application
DESTINATION
Pattern=/test/a
Pattern=/test/#
Client 1
Client 2
21. 20
MQ Light Messaging Model – Persistent destinations
•Destinations persist for a defined “time to live” after receiver detaches.
1. Send (‘/test/a’, “Hello”);
2. Send (‘/test/a’, “World!”);
Topic Address Space
Sender application
Hello
World!
DESTINATION
Pattern=/test/a
Disconnected client
22. 21
MQ Light Messaging Model – Sharing
•Clients attaching to the same topic pattern and share name attach to the
same shared destination.
DESTINATION1. Send (‘/test/a’, “Hello”);
2. Send (‘/test/a’, “World!”);
1. Hello
2. World!
1. Hello
2. World!
SHARING
Topic Address Space
Sender application
DESTINATION
Pattern=/test/#
Pattern=/test/#
Share=myshare
Client 1
Client 2
Client 3
23. 22
MQ Light Messaging Model – Client takeover
1. Send (‘/test/a’, “Hello”);
Hello
Topic Address Space
Sender application
DESTINATION
Pattern=/test/#
Client 1
World!
Client 1
2. Send (‘/test/a’, “World!”);
•Applications connect to MQ Light service specify (optional) client ID.
•Re-using the same client ID pre-empts the original connection.
•Ideal for worker takeover in the cloud.
24. MQ Light Messaging Model
• Messages
• Payload is either Text or Binary.
• Content-type is used by clients to transfer JSON
• Per message time to live.
• Message delivery model
• At most once delivery (QoS 0)
• At least once delivery (QoS 1)
• Acknowledge & Reject messages
• Control over the number of unacknowledged messages
delivered. (link credit)
23
25. MQ Light API - Language support
24
Simple, programming Language neutral messaging model
Idiomatic language & framework API Mappings
• Frictionless development
Open wire protocol (AMQP 1.0) & Open Source client libraries
• Facilitates community drivers for languages & frameworks
MQ Light API
…Node.js
Python
Java
Ruby
AMQP 1.0
Open, standard, wire protocol
Node.js
beta
beta
beta
26. MQ Light with Java
• JMS 1.1 API
• Pub/Sub and Queue
• Local Transactions only.
• Java SE model
• Java EE Model including MDBs
25
JMS JMS
MQ Light
27. MQ Light Node.JS API
• Installable from NPM
• Fully non blocking – Node.JS style
• Fluent programming style - wrappable into promises.
• Focussed on code simplicity.
• Client seamlessly retries across cloud endpoints
26
# Receive:
var mqlight = require('mqlight');
var recvClient = mqlight.createClient({service: 'amqp://localhost'});
recvClient.on('started', function() {
recvClient.subscribe('news/technology');
recvClient.on('message', function(data, delivery) {
console.log(data);
});
});
# Send:
var mqlight = require('mqlight');
var sendClient = mqlight.createClient({service: 'amqp://localhost'});
sendClient.on('started', function() {
sendClient.send('news/technology', 'Hello World!');
});
30. MQ Light Non Blocking Java API (beta)
• Installable using Maven
• Code is opensource on github.
• Non blocking
• Client seemlessly retries across cloud endpoints
• Backlog
• TLS
29
void send() {
NonBlockingClient.create("amqp://localhost", new NonBlockingClientAdapter<Void>() {
public void onStarted(NonBlockingClient client, Void context) {
client.send("news/technology", "Hello World!", null);
}
}, null);
}
void receive() {
NonBlockingClient.create("amqp://localhost", new NonBlockingClientAdapter<Void>() {
public void onStarted(NonBlockingClient client, Void context) {
client.subscribe("news/technology", new DestinationAdapter<Void>() {
public void onMessage(NonBlockingClient client, Void context, Delivery delivery) {
if (delivery.getType() == Delivery.Type.STRING)
System.out.println(((StringDelivery)delivery).getData());
}
}, null, null);
}
}, null);
}
31. MQ Light Service JMS Support
• Support “Java SE” style messaging.
• The WMQ classes for JMS now contain a provider service for
Bluemix.
• Include WMQ Classes & Push the app to bluemix as .jar
• Supports Liberty Profile “JEE” style messaging.
• Either push a .WAR
– Resource Adapter injected and JNDI namespace populated by
Liberty buildpack.
• Or push a packaged liberty server
– Supports MDBs
30
JmsFactoryFactory ff = JmsFactoryFactory.getInstance(JmsConstants.MQLIGHT_BLUEMIX_PROVIDER);
ConnectionFactory cf = ff.createConnectionFactory();
32. Under the covers
App
Monitoring&Ops
Bluemix
Replicated GPFS
Filesystem
MQ Light service
Runtime
QM
QM
QM
QM
QM
QM
QM
QM
Service
Lookup
MQ V8 Queue Managers with MQ
Light support.
Service architecture uses best practice
from our enterprise MQ Customers
Transformed for the cloud.
Reliability and availability underpinned
by:
Multi-instance queue managers
Replicated GPFS Fileysystem
24x7 Monitoring and Ops
support.
All running in Softlayer
App
33. Flexible & scalable applications wired with MQ Light.
32
Node-RED
.py
.rb
on rails
.rb
sinatra
containers
34. Agenda
• Introduction to Bluemix
• Application Messaging
• Introduction to MQ Light Service
• Demo
33
35. Demo content
• Interaction with other things in Bluemix.
• Nodered
• Lots of programming languages
• Develop locally
34
36. Summary
• MQ Light : https://developer.ibm.com/messaging/mq-light/
• MQ Light for Bluemix : www.bluemix.net
• Messaging designed for developers to create responsive and
scalable applications
• Simplified messaging API
• Easy to acquire and incorporate into applications
• Development focused tooling
• Range of application deployment options
• MQ Light
• IBM MQ [Statement of Direction]
• MQ Light cloud service in BlueMix
35
38. For Additional Information
• IBM Training
• http://www.ibm.com/training
• IBM WebSphere
• http://www.ibm.com/software/websphere/
• http://www.ibm.com/software/products/ibm-mq
• IBM developerWorks
• http://www.ibm.com/developerworks/websphere
• https://www.ibm.com/developerworks/community/blogs/messaging
• WebSphere forums and community
• http://www.ibm.com/developerworks/websphere/community/
40. Notices and Disclaimers (con’t)
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, Bluemix, Blueworks Live, CICS, Clearcase, DOORS®, Enterprise Document
Management System™, Global Business Services ®, Global Technology Services ®, Information on Demand,
ILOG, Maximo®, MQIntegrator®, MQSeries®, Netcool®, OMEGAMON, OpenPower, PureAnalytics™,
PureApplication®, pureCluster™, PureCoverage®, PureData®, PureExperience®, PureFlex®, pureQuery®,
pureScale®, PureSystems®, QRadar®, Rational®, Rhapsody®, SoDA, SPSS, StoredIQ, Tivoli®, Trusteer®,
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.
41. Thank You
Your Feedback is
Important!
Access the InterConnect 2015
Conference CONNECT Attendee
Portal to complete your session
surveys from your smartphone,
laptop or conference kiosk.
Rob Nicholson
Senior Technical Staff Member
Software Group
rob_nicholson@uk.ibm.com
+44 1962 817517
Twitter: nicholsr
Linkedin: uk.linkedin.com/in/robertbnicholson/
Notes de l'éditeur
Want to compare the motivations and priorities of Andy & Iain
Andy : apps that can scale, apps that will remain responsive, ensuring heavy lifting doesn’t get in the way of the user experience
Iain : ensuring systems remain running no matter what, ensure changes are planned to minimise unexpected impact on critical business systems, Ensuring things are connected in a managed way
How things have evolved technologically
Used to be a handful of languages,
Explosion of languages that people want to use (each has their specific benefits)
Even larger explosion of frameworks within these languages.