MQ Light for Bluemix - IBM Interconnect 2015 session AME4183

41
© 2015 IBM Corporation AME-4183: Getting Onboard with Messaging-as-a-Service Using IBM MQ Light for Bluemix Rob Nicholson Alan Chat

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”

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 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

[email protected]

+44 1962 817517

Twitter: nicholsr

Linkedin: uk.linkedin.com/in/robertbnicholson/