mq fundamentals 101228114012 phpapp02

85
Fundamentals of Websphere MQ Series [email protected]

Upload: chlaxmikanth

Post on 03-Mar-2015

239 views

Category:

Documents


6 download

TRANSCRIPT

Page 1: Mq Fundamentals 101228114012 Phpapp02

Fundamentals of Websphere MQ Series

[email protected]

Page 2: Mq Fundamentals 101228114012 Phpapp02

Agenda  Websphere MQ Introduction  Websphere MQ Objects  Websphere MQ Administration Basics  Hands-on part 1  Distributed MQ

  Websphere MQ Clusters  Hands-on part 2  Websphere MQ Programming Basics  Hands-on part 3

[email protected]

Page 3: Mq Fundamentals 101228114012 Phpapp02

Introduction

[email protected]

Page 4: Mq Fundamentals 101228114012 Phpapp02

Messaging and Queuing  Telephone answering machine  Punched Cards and processing  Clerical Data Input and processing   Information Management Systems (IMS)  Customer Information Control System (CICS)  Telecommunications Access Methods (TCAM)

  Virtual Telecommunications Access Method

[email protected]

Page 5: Mq Fundamentals 101228114012 Phpapp02

Messaging and Queuing  Messaging is

  an availability adaptation technique used for the transfer of information between two entities without regard for the immediate availability and accessibility of either

 Queuing   a time adaptation technique user for saving information

until the intended message receiver is ready to receive it

Messaging and queuing is both asynchronous and connection less

Note: entities can be program, persons, systems etc

[email protected]

Page 6: Mq Fundamentals 101228114012 Phpapp02

Requirements  Distributed applications and systems   Increase in program to program communication  Heterogeneous Platforms  Multiple communication protocols  Maximize resource utilization  Development complexity and resource skill set

[email protected]

Page 7: Mq Fundamentals 101228114012 Phpapp02

Websphere MQ (MQ Series until '02)   IBM middleware for messaging & queuing  Launched on MVS/ESA in 1992  Currently available on all major platforms

  Windows   UNIX (AIX\Linux\Sun Solaris, HP-UX)   AS/400   Z/OS

 Common API (MQI) on all platforms  Supports multiple programming languages

  C, C++, JAVA, VB, COBOL,PL/1,Assembler  Supports JMS standard APIs for messaging

[email protected]

Page 8: Mq Fundamentals 101228114012 Phpapp02

MQ Objects

[email protected]

Page 9: Mq Fundamentals 101228114012 Phpapp02

MQ Message  String of bytes meaningful to the entity using it.  Two parts to MQ messages  Application Data

  Content and structure defined and understood by the application program

 Message Descriptor   Contains control information like type of message and

priority which are understood and used by MQ  Default length is 4 MB; the max length is 100 MB  Length can be restricted by the definition of MQ

objects and the system storage  Messages can be segmented or grouped

[email protected]

Page 10: Mq Fundamentals 101228114012 Phpapp02

MQ Messages  Message Types (Functional)

  Datagram   Request   Reply   Report

 Message Retention Types   Persistent   Non-persistent

[email protected]

Page 11: Mq Fundamentals 101228114012 Phpapp02

MQ Message Descriptor  Version  Message ID/Correlation ID  Persistent/Non persistent  Priority  Date and time  Life time of a message  Coded Character Set Id  Format  Sender application and type  Report options/Feedback  Back out counter  Segmentation/Grouping information

[email protected]

Page 12: Mq Fundamentals 101228114012 Phpapp02

MQ Object Types  Queue manager  Queue  Process Definitions  Channels  Name lists  System Default Objects  Clusters  Authentication Information Objects

[email protected]

Page 13: Mq Fundamentals 101228114012 Phpapp02

MQ Object Names  Up to 48 characters for all objects except channels  Up to 20 characters for channels

  Uppercase A- Z   Lowercase a - z   Numerics 0 - 9   Period (.)   Underscore (_)   Forward slash (/)*   Percent sign (%)*

 Blanks are not allowed

* - If used, names should be enclosed in double quotes since these are special characters

[email protected]

Page 14: Mq Fundamentals 101228114012 Phpapp02

Managing MQ Objects  Control commands typed in through key board.  MQSC commands through key board or from files  Programmable Command Format (PCF) Messages  MQ Administration Interface (MQAI) call from a

program  MQ Explorer snap-in and MQ services snap-in

running under Microsoft management Console*

* - Applicable to Windows platform only

[email protected]

Page 15: Mq Fundamentals 101228114012 Phpapp02

Message Queue Manager (MQM)  Manages queues of messages for applications  Provides application programming interface MQI  Uses existing network facilities to transfer

messages  Coordinates database and queue data updates  Segments messages and assembles them  Allows message grouping and disassembling  Can send message to more than one destination  Provides administrative functions on objects  Special events like triggers and instrumentation

events are generated

[email protected]

Page 16: Mq Fundamentals 101228114012 Phpapp02

MQ Queues For Applications  Local Queues  Remote Queues  Alias Queues  Model Queues  Dynamic Queues

Used by MQ   Initiation Queues  Transmission Queues  Cluster Transmission

Queues  Dead-letter Queues  Command Queues  Reply-to queues  Event Queues

[email protected]

Page 17: Mq Fundamentals 101228114012 Phpapp02

Process definition  Defines an application that starts in response to a

trigger  Attributes include application type, application ID

(path) and data specific to the application

[email protected]

Page 18: Mq Fundamentals 101228114012 Phpapp02

Channels  Logical communication link  Communication path from one MQM to another  Used to move messages between MQMs  Shields applications from underlying protocols  Message Channels connects two MQMs

  Uses Message Channel Agents (MCA)   Unidirectional   Requires a sender, receiver channels and a protocol

 MQI Channels connects MQ client to server   Bidirectional   Used for MQ calls and responses only

[email protected]

Page 19: Mq Fundamentals 101228114012 Phpapp02

Namelist  Contains a list of MQ objects; queue, cluster,

authinfo  Typically used by trigger monitors to identify a

group of queues  Used in clustered environment to inform the

availability of an MQ object to clusters  Maintained independent of application and can be

modified without stopping it  Multiple applications can use a Namelist

[email protected]

Page 20: Mq Fundamentals 101228114012 Phpapp02

MQ Overview1

[email protected]

Page 21: Mq Fundamentals 101228114012 Phpapp02

MQ Overview

MQ Client

Application MQPUT

MQI Channel

MQ Server (MQM1)

MQI Channel

Sender Channel

Remote Q

MQ Server (MQM2)

Receiver Channel

Local Q

[email protected]

Page 22: Mq Fundamentals 101228114012 Phpapp02

Putting Together1

[email protected]

Page 23: Mq Fundamentals 101228114012 Phpapp02

System Default Objects

[email protected]

Page 24: Mq Fundamentals 101228114012 Phpapp02

System Default Objects

[email protected]

Page 25: Mq Fundamentals 101228114012 Phpapp02

System Default Objects

[email protected]

Page 26: Mq Fundamentals 101228114012 Phpapp02

Basic MQ Administration

[email protected]

Page 27: Mq Fundamentals 101228114012 Phpapp02

Basic Administration*  Define MQ Objects  Display MQ Objects  Alter MQ Objects  Delete MQ Objects  Miscellaneous

* - Control Commands and MQSC Commands

[email protected]

Page 28: Mq Fundamentals 101228114012 Phpapp02

MQM Administration  Create MQ Manager CRTMQM e.g. CRTMQM /q TESTQMGR /q – sets the MQM as default  Start MQ Manager STRMQM e.g. STRMQM TESTQMGR  Stop MQ Manager ENDMQM e.g. ENDMQM TESTQMGR  Delete MQ Manager DLTMQM e.g. ENDMQM TESTQMGR

[email protected]

Page 29: Mq Fundamentals 101228114012 Phpapp02

MQM Administration  Stop MQ Manager ENDMQM Options

 By default MQM is quiesced and so takes time   -c to notifies all applications to stop but doesn't

wait for MQM to end   -c is same as issuing ENDMQM with no options   -w waits until apps stop and MQM ends   -i immediate and doesn't wait for apps to

disconnect   -p pre-emptive and should be used with caution

[email protected]

Page 30: Mq Fundamentals 101228114012 Phpapp02

Managing MQM Objects  MQSC Commands by running RUNMQSC

 Verify a command without running it  Run a command on a local queue manager  Run a command on a remote queue manager

 To display MQM properties   STRMQM TESTQMGR (if not started already)   RUNMQSC or RUNMQSC TESTQMGR   display QMGR (MQSC Command)   END

 RUNMQSC can accept commands through key board or from a file   RUNMQSC < command.in > execution.out

[email protected]

Page 31: Mq Fundamentals 101228114012 Phpapp02

Managing Queues  Create a local queue

  DEFINE QLOCAL(TEST.LOCAL.QUEUE)  Display a local queue

  DISPLAY QLOCAL(TEST.LOCAL.QUEUE)  Alter a local queue

  ALTER QLOCAL(TEST.LOCAL.QUEUE) + GET(DISABLED)

 Delete a local queue   DELETE QLOCAL(TEST.LOCAL.QUEUE) PURGE

[email protected]

Page 32: Mq Fundamentals 101228114012 Phpapp02

Managing Trigger Processes  Create a Process

  DEFINE PROCESS(PROC1) REPLACE + DESCR('test proc') APPLTYPE(WINDOWS)+ APPLICID('c:\test\prog.exe')  Display a Process

  DISPLAY PROCESS(PROC1)  Alter a Process

  ALTER PROCESS(PROC1)USERDATA('12')  Delete a Process

  DELETE PROCESS(PROC1)

[email protected]

Page 33: Mq Fundamentals 101228114012 Phpapp02

Enabling Triggers  Enabling trigger in a queue

  DEFINE QLOCAL(TEST.LOCAL.QUEUE)REPLACE + TRIGGER TRIGTYPE(first)PROCESS(PROC1)+ INITQ(SYSTEM.DEFAULT.INITIATION.QUEUE)  Trigger Types

  every   first   N messages

[email protected]

Page 34: Mq Fundamentals 101228114012 Phpapp02

Managing Channels  Create a Channel

  DEFINE CHANNEL(MQMA.MQMB)CHLTYPE(sdr)+ XMITQ(MQMB) TRPTYPE(tcp)+ CONNAME(SERVER1.XYZ.COM)  Display a Channel

  DISPLAY CHANNEL(MQMA.MQMB)  Alter a Channel

  ALTER CHANNEL(MQMA.MQMB)+ CONNAME(SERVER2.XYZ.COM)

 Delete a Channel   DELETE CHANNEL(MQMA.MQMB)

[email protected]

Page 35: Mq Fundamentals 101228114012 Phpapp02

Managing Namelist  Create a Namelist

  DEFINE NAMELIST(CLUSTERNL)+ NAMES(CLUSA,CLUSB)+ NLTYPE(CLUSTER)REPLACE  Display a Namelist

  DISPLAY NAMELIST(CLUSTERNL)  Alter a Namelist

  DEFINE NAMELIST(CLUSTERNL)+ NAMES(CLUSA,CLUSB,CLUSC)+ NLTYPE(CLUSTER)  Delete a Namelist

  DELETE NAMELIST(CLUSTERNL)

[email protected]

Page 36: Mq Fundamentals 101228114012 Phpapp02

Hands-on Part 1 MQ Administration

[email protected]

Page 37: Mq Fundamentals 101228114012 Phpapp02

Distributed MQ

[email protected]

Page 38: Mq Fundamentals 101228114012 Phpapp02

Distributed MQ

 Transferring messages between Queue Managers  Queue Managers can be on the same machine or

world apart  Queue Managers can be on the same platform or

hetrogenous platforms   Implemented using Distributed Queue Management

(DQM) features of MQ including MQ Clusters

[email protected]

Page 39: Mq Fundamentals 101228114012 Phpapp02

Distributed MQ Components

 Local and remote Queue Managers and queues  Local is one to which an application is connected

 Remote queue definition  Local definition of a queue in a remote MQM

 Transmission Queues  Special local queue to store message temporarily

before transmitting to remote destination  Message channel agents (MCA)

 Software that handles sending and receiving  Channels

 One way communication link between MQMs

[email protected]

Page 40: Mq Fundamentals 101228114012 Phpapp02

Distributed MQ Components

 Dead letter queue  Special queue to store undelivered messages

 Transport Service  Communication protocol independent of MQ  MQ supports multiple protocols  Platform dependent

 Channel Initiators and Listeners   Initiators are trigger monitors for sender channels  Listeners start receiver channels on receiving

request from the sender MCA  Channel Exit Programs

 Used for additional processing like encryption [email protected]

Page 41: Mq Fundamentals 101228114012 Phpapp02

Distributed MQ Components

M

C

A

M

C

A

M

C

A

M

C

A

Channel

Channel Transport

Service (TCP)

Transport Service (TCP)

App Q

App Q

App Q

App Q

App Q

XMIT Q

XMIT Q XMIT Q

QM1 QM2

Channel Initiator Listener

Init Q

[email protected]

Page 42: Mq Fundamentals 101228114012 Phpapp02

Sample DQM Definition1

CHAD – Channel Auto Definition

[email protected]

Page 43: Mq Fundamentals 101228114012 Phpapp02

Sample DQM Definition On QMA Define QREMOTE(Q1)+ RNAME(Q1)+ RQMNAME(QMB)+ XMITQ(QMB)

DEFINE QLOCAL(QMB)+ USAGE(XMITQ)

DEFINE CHANNEL(A.B)+ CHLTYPE(sdr)+ XMITQ(QMB)+ TRPTYPE(tcp)+ CONNAME(SERVERB.COM)

DEFINE QLOCAL(Q2) DEFINE CHANNEL(B.A)+ CHLTYPE(rcvr)+ TRPTYPE(tcp)

On QMB DEFINE QLOCAL(Q1) DEFINE CHANNEL(A.B)+ CHLTYPE(rcvr)+ TRPTYPE(tcp)

Define QREMOTE(Q2)+ RNAME(Q2)+ RQMNAME(QMA)+ XMITQ(QMA)

DEFINE QLOCAL(QMA)+ USAGE(XMITQ)

DEFINE CHANNEL(B.A)+ CHLTYPE(sdr)+ XMITQ(QMA)+ TRPTYPE(tcp)+ CONNAME(SERVERA.COM)

[email protected]

Page 44: Mq Fundamentals 101228114012 Phpapp02

Channel Types & Combinations Channel Types   Sender   Receiver   Server   Requester   Cluster Sender   Cluster Receiver

Valid Combinations   Sender - Receiver   Requester - Server   Requester - Sender   Server - Receiver   Cluster Sender –

Cluster Receiver

[email protected]

Page 45: Mq Fundamentals 101228114012 Phpapp02

Queue Addressing & Aliases

 Queue Name + Queue Manager Name + Transmission Queue (if remote queue)

 Remote Queue Definition  Resolves the remote queue location

 Queue Manager Alias Definition  Specifies alternative names for the message

descriptor of a “send” message  Reply-to Queue Alias Definition

 Specifies alternative names for the reply information in the message descriptor

 Aliases are characterized by a blank RNAME in the remote queue definition

[email protected]

Page 46: Mq Fundamentals 101228114012 Phpapp02

Remote Queue Definition

 Remote Queue Definition -  Define QREMOTE(Q1)RNAME(Q1)+ RQMNAME(QMB)XMITQ(QMB)

 Resolves the remote queue address using the remote queue manager, remote queue name and the transmission queue

  If the transmission queue is not specified, a transmission queue with the name of the remote queue manager will be used

  If not available, the default transmission queue of the queue manager will be used

[email protected]

Page 47: Mq Fundamentals 101228114012 Phpapp02

Queue Manager Alias

 Queue Manager Alias -  Define QREMOTE(QMB_Test)RNAME()+ RQMNAME(QMB)

-  Define QREMOTE(QMB_Test)RNAME()+ RQMNAME(QMB)XMITQ(QMC)

 Messages with MQM QMB_Test in the descriptor will be modified to QMB before being forwarded

 XMITQ parameter can be used to steer the message to use a specified channel

  If transmission queue is not specified, the logic detailed in the previous slide will be used

[email protected]

Page 48: Mq Fundamentals 101228114012 Phpapp02

Reply-to Queue Alias

 Can be used to alter the reply-to queue and queue manager without changing the application

 At the sender queue manager -  Define QREMOTE(QMA_Reply) + RNAME(Answer_QMA)RQMNAME(QMA_Return)

-  Define QREMOTE(QMA_Return)RNAME()+ RQMNAME(QMA)

  In “PUT” call leave the “reply to queue manager” blank and set the queue name to QMA_Reply

 At the replying queue manager -  Define QLOCAL(QMA_Return)USAGE(XMITQ)

[email protected]

Page 49: Mq Fundamentals 101228114012 Phpapp02

Reaching Remote Queue Managers

 Point to point  Multi-hopping  Using shared channels  Using multiple channels  Using MQ clusters

[email protected]

Page 50: Mq Fundamentals 101228114012 Phpapp02

DMQ Commands

 Start Channel Initiators   RUNMQCHI -q IQ (Control Command)   START CHINIT INITQ(IQ) (MQSC Command)

 Stopping Channel Initiators  Alter the init queue to disable GET from queue

 Start MQM Listeners   RUNMQLSR -t TCP -m MQM-p 1414 (control Command)*

  START LISTENER IPADDR(X.X.X.X) PORT(nnnn) TRPTYPE(tcp) (MQSC Command)

*-This requires editing of /etc/services and /etc/inetd.conf files to add MQSeries 1414/tcp #MQ Listener MQSeries stream tcp nowait mqm /usr/mqm/bin/amqcrsta -q mqm.name

[email protected]

Page 51: Mq Fundamentals 101228114012 Phpapp02

DMQ Commands

 Stop MQM Listeners   ENDMQLSR -m MQM (control Command)   STOP LISTENER IPADDR(X.X.X.X) PORT(nnnn) TRPTYPE(tcp) (MQSC Command)

 Start MQ Channel   RUNMQCHL -c CHANNEL -m QM (Control Command)   START CHANNEL(channel-name) (MQSC Command)

 Stop MQ Channel   STOP CHANNEL(channel-name) (MQSC Command)

 Display MQ Channel Status   DISPLAY CHSTATUS(channel-name) (MQSC Command)

[email protected]

Page 52: Mq Fundamentals 101228114012 Phpapp02

DMQ Commands

 To test a channel   PING CHANNEL(channel-name) (MQSC Command)

[email protected]

Page 53: Mq Fundamentals 101228114012 Phpapp02

MQ Clusters

[email protected]

Page 54: Mq Fundamentals 101228114012 Phpapp02

DQM vs Clusters DQM Components Local MQM   Remote Q definition   Xmit Q definition   Sender Channel

Remote MQM   Local Q   Receiver Channel   Listener

Cluster Definitions Local MQM   Cluster receiver channl   Cluster sender channel

Remote MQM   Cluster receiver channl   Cluster sender channel

[email protected]

Page 55: Mq Fundamentals 101228114012 Phpapp02

Cluster Advantages

 Reduced system administration due to reduced number of definitions

  Increased availability and scalability due to easy administration and multiple instances of queues

 Work load balancing using multiple instances of queues

[email protected]

Page 56: Mq Fundamentals 101228114012 Phpapp02

Cluster Component Details  MQ Cluster is a network of logically related MQMs

and need to be unique in an enterprise  Cluster Queue Manager is a MQM that is a

member of a MQ Cluster and should be unique in the cluster

 Cluster Queue is a queue hosted in a cluster queue manager and is available to all MQM in a cluster

 Repository is a collection of information about the queue managers that are part of a cluster

 Full Repository is one which stores a complete set of information about all MQMs in the cluster

 Partial Repository is one which stores information which is required to deal with interested MQMs

[email protected]

Page 57: Mq Fundamentals 101228114012 Phpapp02

Cluster Component Details  Repository Queue manager is a cluster queue

manager which stores a full repository   SYSTEM.CLUSTER.REPOSITORY.QUEUE

 Cluster Receiver Channel is the receiving end of a channel on which cluster MQMs can receive messages from other MQMs in the cluster

 Cluster Sender Channel is the sending end of a channel on which cluster MQMs can send cluster information to one of the full repositories

 Cluster Transmission Queue transmits all messages from a cluster MQM to any MQM in the cluster   SYSTEM.CLUSTER.TRANSMIT.QUEUE

 Command Queue is used to make requests and get responses from full repositories

[email protected]

Page 58: Mq Fundamentals 101228114012 Phpapp02

Clustered MQ Components

Cluster Receiver Channel

Cluster Receiver Channel Transport

Service (TCP)

Transport Service (TCP)

App Q App Q

App Q1

App Q

App Q1

XMIT Q

QM1 QM2

Full Repository

Full Repository

Cluster Sender Channel

Cluster - CLUA

XMIT Q XMIT Q

XMIT Q

[email protected]

Page 59: Mq Fundamentals 101228114012 Phpapp02

Cluster Definition On QM1 RUNMQSC ALTER QMGR REPOS(CLUA) DEFINE CHANNEL(TO.QM1)+ CHLTYPE(CLUSRCVR)+ TRPTYPE(tcp)+ CONNAME(QM1.COM)+ CLUSTER(CLUA) DEFINE CHANNEL(TO.QM2)+ CHLTYPE(CLUSSDR)+ TRPTYPE(tcp)+ CONNAME(QM2.COM)+ CLUSTER(CLUA) DEFINE QLOCAL(Q1)+ CLUSTER(CLUA)

On QM2 RUNMQSC ALTER QMGR REPOS(CLUA) DEFINE CHANNEL(TO.QM2)+ CHLTYPE(CLUSRCVR)+ TRPTYPE(tcp)+ CONNAME(QM1.COM)+ CLUSTER(CLUA) DEFINE CHANNEL(TO.QM1)+ CHLTYPE(CLUSSDR)+ TRPTYPE(tcp)+ CONNAME(QM1.COM)+ CLUSTER(CLUA) DEFINE QLOCAL(Q)+ CLUSTER(CLUA)

[email protected]

Page 60: Mq Fundamentals 101228114012 Phpapp02

Adding new QM (QM3) to Cluster RUNMQSC DEFINE CHANNEL(TO.QM3)+ CHLTYPE(CLUSRCVR)+ TRPTYPE(tcp)+ CONNAME(QM3.COM)+ CLUSTER(CLUA) DEFINE CHANNEL(TO.QM1)+ CHLTYPE(CLUSSDR)+ TRPTYPE(tcp)+ CONNAME(QM1.COM)+ CLUSTER(CLUA)

Note: QM3 doesn't store a full repository and points to QM1 repository

[email protected]

Page 61: Mq Fundamentals 101228114012 Phpapp02

Adding new QM on DHCP to Cluster RUNMQSC DEFINE CHANNEL(TO.QM3)+ CHLTYPE(CLUSRCVR)+ TRPTYPE(tcp)+ CONNAME('')+ CLUSTER(CLUA) DEFINE CHANNEL(TO.+QMNAME+)+ CHLTYPE(CLUSSDR)+ TRPTYPE(tcp)+ CONNAME(QM2.COM)+ CLUSTER(CLUA)

Note: the channel definition TO.+QMNAME+ will be replaced by TO.QM2

[email protected]

Page 62: Mq Fundamentals 101228114012 Phpapp02

Verifying a Cluster  Each MQM require a channel initiator to monitor

the system defined init Q SYSTEM.CHANNEL.INITQ  START CHINIT

 Each MQM require a channel listener to listen to incoming network requests  START LISTENER PORT(1414)+ TRPTYPE(TCP)

 Verify all the available MQMs in the cluster  DISPLAY CLUSQMGR(*)

 Verify all the channel statuses  DISPLAY CHSTATUS(*)

[email protected]

Page 63: Mq Fundamentals 101228114012 Phpapp02

Load Balancing Using Cluster  Define the same queue in multiple queue managers

in the cluster  MQ series will use the default algorithm (round

robin) to identify MQM and transfer message  Default algorithm can be changed using the cluster

workload user exit

[email protected]

Page 64: Mq Fundamentals 101228114012 Phpapp02

Hands-on Part 2 Creating MQ Clusters

[email protected]

Page 65: Mq Fundamentals 101228114012 Phpapp02

MQ Programming

[email protected]

Page 66: Mq Fundamentals 101228114012 Phpapp02

Messaging and Queuing Patterns  One to one  One to many  Many to one  Publish/Subscribe  Request/reply  One-way datagram or send-and-forget

[email protected]

Page 67: Mq Fundamentals 101228114012 Phpapp02

One to One Pattern 1

[email protected]

Page 68: Mq Fundamentals 101228114012 Phpapp02

One to Many Pattern 1

[email protected]

Page 69: Mq Fundamentals 101228114012 Phpapp02

Many to One Pattern 1

[email protected]

Page 70: Mq Fundamentals 101228114012 Phpapp02

Publish/Subscribe Pattern 1

[email protected]

Page 71: Mq Fundamentals 101228114012 Phpapp02

Request/Reply Pattern 1

[email protected]

Page 72: Mq Fundamentals 101228114012 Phpapp02

Send and Forget Pattern1 (Datagram)

[email protected]

Page 73: Mq Fundamentals 101228114012 Phpapp02

Transaction Management  ACID unit of work  Single phase commit  Two phase commit with XA specification

compliant resource managers  BackoutCount and BackoutThreshold attributes to

avoid looping

[email protected]

Page 74: Mq Fundamentals 101228114012 Phpapp02

Message Queuing Interface (MQI)

[email protected]

Page 75: Mq Fundamentals 101228114012 Phpapp02

MQI Data Structures

[email protected]

Page 76: Mq Fundamentals 101228114012 Phpapp02

MQ Programming Sequence

MQCONN

MQOPEN

BASIC OP

MQCLOSE

MQDISC

Connect to MQM

Open MQ Objects

Perform n operations

Close MQ Objects

Disconnect from MQM

[email protected]

Page 77: Mq Fundamentals 101228114012 Phpapp02

MQ JAVA Programming

[email protected]

Page 78: Mq Fundamentals 101228114012 Phpapp02

JAVA Programming Environment  Required jar file

  com.ibm.mq.jar  Normally found in the MQ installation directory

 Environment variable set-up  Add com.ibm.mq.jar to the classpath   CLASSPATH=install_dir\lib\com.ibm.mq.jar   install_dir is platform dependent

  Import required package in the code   Import com.ibm.mq.*;

[email protected]

Page 79: Mq Fundamentals 101228114012 Phpapp02

Connection Modes

Connection Modes

Binding Mode Client Connection Mode

[email protected]

Page 80: Mq Fundamentals 101228114012 Phpapp02

MQ Series JAVA Classes   MQEnvironment

  Contains the static variables that control the environment in which a MQQueueManager is constructed

  MQQueueManager   Represents the MQ series queue manager

  MQQueue   Provides inquiry, set,put,get operations for queues

  MQMessage   Represents the descriptor and data of a MQ message

  MQPutOptions   Contains options which control MQQueue.put() method

  MQGetOptions   Contains options which control MQQueue.get() method

  MQException   Contains completion codes and error code constants

[email protected]

Page 81: Mq Fundamentals 101228114012 Phpapp02

Setting up the Connection MQEnvironment.hostname=“TEST.SERVER.COM” MQEnvironment.channel=“TEST.CLIENT.CHNL” MQEnvironment.port=1638 MQEnvironment.userId=”userABC” MQEnvironment.password=”password” MQEnvironment.properties.put(MQC.TRANSPORT_PROPERTY,MQC.TRANSPORT_MQSERIES)

MQQueueManager qMgr = new MQQueueManager(“TEST”);

[email protected]

Page 82: Mq Fundamentals 101228114012 Phpapp02

Interacting with Queues - Put Int openOptions = MQC.MQOO_OUTPUT|MQC.MQOO_FAIL_IF_QUIESCING;

MQQueue queue = qMgr.accessQueue(“TestQ”,openOptions);

MQPutMessageOptions pmo = new MQPutMessageOptions();

MQMessage outMsg = new MQMessage(); outMsg.format = MQC.MQFMT_STRING; String msgString = “Test message”; outMsg.writeString(msgString); queue.put(outMsg,pmo);

[email protected]

Page 83: Mq Fundamentals 101228114012 Phpapp02

Interacting with Queues - Get Int openOptions = MQC.MQOO_INPUT_SHARED|MQC.MQOO_FAIL_IF_QUIESCING;

MQQueue queue = qMgr.accessQueue(“TestQ”,openOptions);

MQGetMessageOptions gmo = new MQGetMessageOptions();

gmo.options = gmo.options + MQC.MQGMO_SYNCPOINT;

gmo.options = gmo.options + MQC.MQGMO_WAIT;

gmo.waitInterval = 3000; MQMessage inMsg = new MQMessage(); queue.put(inMsg,gmo);

[email protected]

Page 84: Mq Fundamentals 101228114012 Phpapp02

Closing the Connection qMgr.commit(); queue.close(); qMgr.disconnect();

[email protected]

Page 85: Mq Fundamentals 101228114012 Phpapp02

Hands-on Part 3 MQ Programming

[email protected]