© 2015 IBM Corporation
AME-4183: Getting Onboard with
Messaging-as-a-Service Using
IBM MQ Light for Bluemix
Rob Nicholson
Alan Chat
Agenda
• Introduction to Bluemix
• Application Messaging
• Introduction to MQ Light Service
• Demo
1
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.
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
Agenda
• Introduction to Bluemix
• Application Messaging
• Introduction to MQ Light Service
• Demo
4
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
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
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
The journey that got us here…
8
Ruby
Node.js
Python
C
C++
Java
C#
Perl
Go
Clojure
Lua
Erlang Scala
PHP
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
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”
Deployment Options
11
MQ Light Service
for Bluemix
WebSphere MQ
[open Beta]
“MQ Light”
Agenda
• Introduction to Bluemix
• Application Messaging
• Introduction to MQ Light Service
• Demo
12
MQ Light Focus
1. First Five Minute Experience
2. Developer Centric Tooling
3. Programming Language Support
13
MQ Light Focus
1. First Five Minute Experience
2. Developer Centric Tooling
3. Programming Language Support
• Simple Messaging Model
• Idiomatic clients
• Open wire protocol (AMQP 1.0 ) & Open source clients (Qpid proton).
14
Introduction to MQ Light Service
15
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
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
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
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
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
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
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.
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
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
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
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!');
});
MQ Light Ruby API (Beta)
• Installable from rubygems.org
• Synchronous/blocking client.
• Bluemix connection support
• Backlog
• Auto reconnect.
• Asynchronous non blocking
• TLS
27
# Receive:
require 'mqlight'
client = Mqlight::BlockingClient.new('amqp://localhost')
client.subscribe('news/technology')
delivery = client.receive('news/technology')
puts delivery.data
# Send:
require 'mqlight'
client = Mqlight::BlockingClient.new('amqp://localhost')
client.send('news/technology', 'Hello World!')
MQ Light Python API (Beta)
• Installable from rubygems.org
• Non blocking
• Client seemlessly retries across cloud endpoints
• Backlog
• TLS
28
# Receive:
require 'mqlight'
client = Mqlight::BlockingClient.new('amqp://localhost')
client.subscribe('news/technology')
delivery = client.receive('news/technology')
puts delivery.data
# Send:
require 'mqlight'
client = Mqlight::BlockingClient.new('amqp://localhost')
client.send('news/technology', 'Hello World!')
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);
}
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();
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
Flexible & scalable applications wired with MQ Light.
32
Node-RED
.py
.rb
on rails
.rb
sinatra
containers
Agenda
• Introduction to Bluemix
• Application Messaging
• Introduction to MQ Light Service
• Demo
33
Demo content
• Interaction with other things in Bluemix.
• Nodered
• Lots of programming languages
• Develop locally
34
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
IBM MQ Sessions this week
10:30 - 12:00 13:15 - 14:15 14:30 - 15:30 16:00 - 17:00 17:15 - 18:15
Monday
9:00 - 10:00 10:30 - 11:30 11:45 - 12:45 14:00 - 15:00 15:15 - 16:15 16:45 - 17:45
TuesdayWednesdayThursday
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/
Notices and Disclaimers
Copyright © 2015 by International Business Machines Corporation (IBM). No part of this document may be reproduced or
transmitted in any form without written permission from IBM.
U.S. Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with
IBM.
Information in these presentations (including information relating to products that have not yet been announced by IBM) has been
reviewed for accuracy as of the date of initial publication and could include unintentional technical or typographical errors. IBM
shall have no responsibility to update this information. THIS DOCUMENT IS DISTRIBUTED "AS IS" WITHOUT ANY WARRANTY,
EITHER EXPRESS OR IMPLIED. IN NO EVENT SHALL IBM BE LIABLE FOR ANY DAMAGE ARISING FROM THE USE OF
THIS INFORMATION, INCLUDING BUT NOT LIMITED TO, LOSS OF DATA, BUSINESS INTERRUPTION, LOSS OF PROFIT
OR LOSS OF OPPORTUNITY. IBM products and services are warranted according to the terms and conditions of the
agreements under which they are provided.
Any statements regarding IBM's future direction, intent or product plans are subject to change or withdrawal without
notice.
Performance data contained herein was generally obtained in a controlled, isolated environments. Customer examples are
presented as illustrations of how those customers have used IBM products and the results they may have achieved. Actual
performance, cost, savings or other results in other operating environments may vary.
References in this document to IBM products, programs, or services does not imply that IBM intends to make such products,
programs or services available in all countries in which IBM operates or does business.
Workshops, sessions and associated materials may have been prepared by independent session speakers, and do not
necessarily reflect the views of IBM. All materials and discussions are provided for informational purposes only, and are neither
intended to, nor shall constitute legal or other guidance or advice to any individual participant or their specific situation.
It is the customer’s responsibility to insure its own compliance with legal requirements and to obtain advice of competent legal
counsel as to the identification and interpretation of any relevant laws and regulatory requirements that may affect the customer’s
business and any actions the customer may need to take to comply with such laws. IBM does not provide legal advice or
represent or warrant that its services or products will ensure that the customer is in compliance with any law.
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.
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/

MQ Light for Bluemix - IBM Interconnect 2015 session AME4183

  • 1.
    © 2015 IBMCorporation AME-4183: Getting Onboard with Messaging-as-a-Service Using IBM MQ Light for Bluemix Rob Nicholson Alan Chat
  • 2.
    Agenda • Introduction toBluemix • Application Messaging • Introduction to MQ Light Service • Demo 1
  • 3.
    IBM Bluemix 2 Bluemix isan 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 hardwarethat’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 toBluemix • Application Messaging • Introduction to MQ Light Service • Demo 4
  • 6.
    IBM Messaging Deliver Messaging Backbonefor 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 thatgot 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 thatgot us here… 8 Ruby Node.js Python C C++ Java C# Perl Go Clojure Lua Erlang Scala PHP
  • 10.
    Trend towards cloudnative 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 Messagingfor 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”
  • 12.
    Deployment Options 11 MQ LightService for Bluemix WebSphere MQ [open Beta] “MQ Light”
  • 13.
    Agenda • Introduction toBluemix • Application Messaging • Introduction to MQ Light Service • Demo 12
  • 14.
    MQ Light Focus 1.First Five Minute Experience 2. Developer Centric Tooling 3. Programming Language Support 13
  • 15.
    MQ Light Focus 1.First Five Minute Experience 2. Developer Centric Tooling 3. Programming Language Support • Simple Messaging Model • Idiomatic clients • Open wire protocol (AMQP 1.0 ) & Open source clients (Qpid proton). 14
  • 16.
    Introduction to MQLight Service 15
  • 17.
    Tooling to assistdevelopment • 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 MessagingModel – 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 MessagingModel – 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 MessagingModel – 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 MessagingModel – 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 MessagingModel – 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 MessagingModel – 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 MessagingModel • 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 withJava • 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.JSAPI • 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!'); });
  • 28.
    MQ Light RubyAPI (Beta) • Installable from rubygems.org • Synchronous/blocking client. • Bluemix connection support • Backlog • Auto reconnect. • Asynchronous non blocking • TLS 27 # Receive: require 'mqlight' client = Mqlight::BlockingClient.new('amqp://localhost') client.subscribe('news/technology') delivery = client.receive('news/technology') puts delivery.data # Send: require 'mqlight' client = Mqlight::BlockingClient.new('amqp://localhost') client.send('news/technology', 'Hello World!')
  • 29.
    MQ Light PythonAPI (Beta) • Installable from rubygems.org • Non blocking • Client seemlessly retries across cloud endpoints • Backlog • TLS 28 # Receive: require 'mqlight' client = Mqlight::BlockingClient.new('amqp://localhost') client.subscribe('news/technology') delivery = client.receive('news/technology') puts delivery.data # Send: require 'mqlight' client = Mqlight::BlockingClient.new('amqp://localhost') client.send('news/technology', 'Hello World!')
  • 30.
    MQ Light NonBlocking 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 ServiceJMS 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 ReplicatedGPFS 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 & scalableapplications wired with MQ Light. 32 Node-RED .py .rb on rails .rb sinatra containers
  • 34.
    Agenda • Introduction toBluemix • Application Messaging • Introduction to MQ Light Service • Demo 33
  • 35.
    Demo content • Interactionwith 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
  • 37.
    IBM MQ Sessionsthis week 10:30 - 12:00 13:15 - 14:15 14:30 - 15:30 16:00 - 17:00 17:15 - 18:15 Monday 9:00 - 10:00 10:30 - 11:30 11:45 - 12:45 14:00 - 15:00 15:15 - 16:15 16:45 - 17:45 TuesdayWednesdayThursday
  • 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/
  • 39.
    Notices and Disclaimers Copyright© 2015 by International Business Machines Corporation (IBM). No part of this document may be reproduced or transmitted in any form without written permission from IBM. U.S. Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM. Information in these presentations (including information relating to products that have not yet been announced by IBM) has been reviewed for accuracy as of the date of initial publication and could include unintentional technical or typographical errors. IBM shall have no responsibility to update this information. THIS DOCUMENT IS DISTRIBUTED "AS IS" WITHOUT ANY WARRANTY, EITHER EXPRESS OR IMPLIED. IN NO EVENT SHALL IBM BE LIABLE FOR ANY DAMAGE ARISING FROM THE USE OF THIS INFORMATION, INCLUDING BUT NOT LIMITED TO, LOSS OF DATA, BUSINESS INTERRUPTION, LOSS OF PROFIT OR LOSS OF OPPORTUNITY. IBM products and services are warranted according to the terms and conditions of the agreements under which they are provided. Any statements regarding IBM's future direction, intent or product plans are subject to change or withdrawal without notice. Performance data contained herein was generally obtained in a controlled, isolated environments. Customer examples are presented as illustrations of how those customers have used IBM products and the results they may have achieved. Actual performance, cost, savings or other results in other operating environments may vary. References in this document to IBM products, programs, or services does not imply that IBM intends to make such products, programs or services available in all countries in which IBM operates or does business. Workshops, sessions and associated materials may have been prepared by independent session speakers, and do not necessarily reflect the views of IBM. All materials and discussions are provided for informational purposes only, and are neither intended to, nor shall constitute legal or other guidance or advice to any individual participant or their specific situation. It is the customer’s responsibility to insure its own compliance with legal requirements and to obtain advice of competent legal counsel as to the identification and interpretation of any relevant laws and regulatory requirements that may affect the customer’s business and any actions the customer may need to take to comply with such laws. IBM does not provide legal advice or represent or warrant that its services or products will ensure that the customer is in compliance with any law.
  • 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 Feedbackis 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/

Editor's Notes

  • #9 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
  • #10 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.
  • #11 Large builds difficult to get stable & deliver
  • #17 So lets dive in and