MQ Light for Bluemix - IBM Interconnect 2015 session AME4183
-
Upload
robert-nicholson -
Category
Software
-
view
653 -
download
4
Transcript of MQ Light for Bluemix - IBM Interconnect 2015 session AME4183
© 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 WorkersMessaging
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 scalingThe 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”
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
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 protocolNode.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
Monitori
ng
& O
ps
Bluemix
Replicated GPFS
Filesystem
MQ Light service Runtime
QM
QM
QM
QM
QM
QM
QM
QM
ServiceLookup
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
.rbon rails
.rbsinatra
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
Mo
nd
ay
9:00 - 10:00 10:30 - 11:30 11:45 - 12:45 14:00 - 15:00 15:15 - 16:15 16:45 - 17:45
Tu
es
da
yW
ed
ne
sd
ay
Th
urs
da
y
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 YouYour Feedback is
Important!
Access the InterConnect 2015
Conference CONNECT Attendee
Portal to complete your session
surveys from your smartphone,
laptop or conference kiosk.Rob NicholsonSenior Technical Staff Member
Software Group
+44 1962 817517
Twitter: nicholsr
Linkedin: uk.linkedin.com/in/robertbnicholson/