Download - WMQ, WMB and EIP
© Adastra Group
WMQ, WMB & EIP
Message-Oriented Middleware
jPrase
Vít Kotačka
29. 3. 2012
2
Agenda
Enterprise Integration Patterns� Overview� Basic Patterns� Complex Patterns
WebSphere MQ� Overview� Java Interaction
WebSphere Message Broker� Overview� Route Node� Java Compute Node� Web Services
3
Enterprise Integration Patterns
4
Enterprise (Application) Integration
Enterprise integration is the task of making disparate applications work together to produce a unified set of functionality.
5
Main Integration Styles
File Transfer – each application produce files of shared data for others to consume and consume files that others have produced.
Shared Database – applications store the data they wish to share in a common database.
Remote Procedure Invocation – each application expose some of its procedures so that they can be invoked remotedly, and have applications invoke those to initiate behavior and exchange data.
Messaging – each application connect to a common messaging system, and exchange data and invoke behavior using messages.
6
Message
An atomic data packet that the messaging system can transmit from one system to another.
Two basic parts:� Header – information used by the messaging system that describes the
data being transmited (destination, expiration, sequence, etc).� Body – data being transmited.
Types:� Document Message – passes a set of data to another application.� Event Message – notifies another application of change.� Command Message – invokes a procedure in another application.
Java: JMS Message (TextMessage, BytesMessage, ObjectMessage, StreamMessage, MapMessage)
7
Message Channel
A logical address in the messaging system, connecting two applications.
One-way path – first application writes into while second application reads from the channel.
Types:� Point-toPoint Channel – one receiver will receive a particular message.� Publish-Subscribe Channel – delivers a copy of a particular message to
each receiver.� Message Bus – well-designed set of channels that acts like a
messaging API for a whole group of application.
Java: JMS Destination (Queue, Topic)
8
Message Endpoint
Encapsulates the messaging system from the rest of the application.
Is channel-specific, can be used to send OR receive messages(not both).
Types:� Selective Consumer� Durable Subscriber� Idempotent Receiver� Competing Consumers
Java: JMS Producer & Consumer
9
Message Router
A special filter which consumes a message from one message channel and republish it to a different message channel.
Types:� Content-Based Router� Dynamic Router� Message Broker
Java: Apache ActiveMQ/Camel, Spring Integration
10
Pipes and Filters
An architectural style to divide a larger processing task into a sequence of smaller, independent processing steps (filters) that are connected by channels (pipes).
Java: Intercepting Filter (Core J2EE Patterns)
11
Message Translator
A special filter for translation one data format into another. GoF Design Pattern Adapter. Levels of transformation:
� Data Structures – aggregations, cardinalities� Data Types - conversions� Data Representation – parse date and render in a different format.� Transport – move data across protocols
Java: ???, XSLT (Xalan)
12
EIP Basic Patterns Example
13
Message Broker
A central component that can receive messages from multiple destinations, determine the correct destination, and route the message to the correct channel.
Prevention of the spaghetti point-to-point integrations. Usually has to deal with translating message data formats
between applications. Usually uses a Canonical Data Model.
Java: Apache ActiveMQ/Camel, HornetQ (JBoss), BlazeDS
14
Canonical Data Model
A common model independent from any specific application. Require each application to produce and consume messages in this common format.
Java: Data Integration Guidelines (Java BluePrints Patterns) Non-Java: WSDL
15
WebSphere MQ
16
What is WebSphere MQ?
Software that enables programs to communicate across a network using a simple and consistent application programming interface. It is messaging and queuing middleware.
Messaging: programs communicate by sending each other data in messages rather than by calling each other directly.
Queuing: the messages are placed on queues in storage, so that programs can run independently of each other, at different speeds and times, in different locations, and without having a logical connection between them.
17
WebSphere MQ Explorer
18
Queue Manager
Owns and manages queues. Provides API to access queues and messages:
� Message Queue Interface (MQI)� Java Message Service (JMS)
May have multiple queue managers per system. The first WMQ object to be created.
19
Queue
Local queue: stores messages Remote queue: definition for queue that is owned by another
queue manager Transmission queue: temporarily stores messages that are
destined for remote queue managers. Dead-letter queue: designated for messages that cannot be
delivered
20
Message channel
Provides a one-way communication path from one queue manager to another for the transmission of messages.
Consists of� Sending MCA (Message Channel Agent)� Receiving MCA� Communication connection
Transmission queue is required (at the sending end).
21
Remote Queue Messaging
class WebSphere MQ
localhost
«executionEnvironment»WMQ local
«Queue Manager»QM_J PRASE
«Dead-Letter Queue»DLQ
«Receiver Channel»QM_REMOTE.QM_J PRASE
«Local Queue»RECEIVER
remote host
«executionEnvironment»WMQ remote
«Queue Manager»QM_REMOTE
«Dead-Letter Queue»DLQ
«Sender Channel»QM_REMOTE.QM_J PRASE
«Transmission Queue»QM_J PRASE
«Remote Queue»SENDER
TCP
«use»
«use»
«use»«use»
22
Java Interaction
WMQ classes for Java� Encapsulate the Message Queue Interface (MQI).� Full range of features of WMQ.� Not a standard, but more easy.
WMQ classes for JMS� An industry standard� Part of Java EE� Central repository of JMS administered objects
23
WMQ classes for Java
Requires Server-connection channel on the queue manager.
MQQueueManager queueManager =new MQQueueManager(QM_NAME);
MQQueue queue = queueManager.accessQueue(QUEUE,
CMQC.MQOO_OUTPUT);MQMessage message = new MQMessage();message.writeUTF("Hello, jPrase!");queue.put(message);
queue.close();queueManager.disconnect();
24
WMQ classes for Java (configuration)
25
WMQ classes for JMS
Requires Server-connection channel on the queue manager. Requires Initial Context (JMS Administered Objects) JNDI Namespace
� LDAP Server� File System� Other
JMS Administered Objects� Connection Factories� Destinations (mapped on queues)
26
WMQ classes for JMS (code)
ConnectionFactory factory = (ConnectionFactory) context.lookup("jPraseConnectionFactory");Connection connection =
factory.createConnection();Session session=connection.createSession(false,
Session.AUTO_ACKNOWLEDGE);Destination destination =
session.createQueue("JPRASE");MessageProducer producer =
session.createProducer(destination);TextMessage message = session.createTextMessage("Hello, jPrase!");producer.send(message);
27
WMQ classes for JMS (configuration)
deployment JMS Interaction
localhost
«executionEnvironment»WMQ local
«Queue Manager»QM_J AVA
«Local Queue»J PRASE
«Server-connection Channel»J AVA.CHANNEL
«I ni tial Context»file:/ jms
«Connection Factory»jmsConnFact
«Destination»J PRASE
28
WebSphere Message Broker
29
What is WebSphere Message Broker?
You can use IBM® WebSphere® Message Broker to connect applications together, regardless of the message formats or protocols that they support.
The product supports a wide range of protocols: WebSphere MQ, JMS 1.1, HTTP and HTTPS, Web Services (SOAP and REST), File, Enterprise Information Systems (including SAP and Siebel), and TCP/IP.
It supports a broad range of data formats: binary formats (C and COBOL), XML, and industry standards (WIFT, EDI, and HIPAA).
It supports many operations, including routing, transforming, filtering, enriching, monitoring, distribution, collection, correlation, and detection.
30
WebSphere Message Broker Toolkit
31
Message Flow
A sequence of processing steps that run in the broker when an input message is received.
A message flow must include an input node that provides the source of the messages that are processed. You can process the message in one or more ways, and optionally deliver it through one or more output nodes.
The message is received as a bit stream, and is converted by a parser into a tree structure that is used internally in the message flow. Before the message is delivered to a final destination, it is converted back into a bit stream.
32
Message Set
A container for grouping messages and associated message resources (elements, types, groups).
Every message set requires at least one message definition file to describe its messages.
A message describes the structure and content of a set of data that is passed from one application to another.
Typically import of message formats described by:� XML DTD� XML Schema� WSDL� C structure
33
Execution Group
An execution group is a named grouping of message flows that have been assigned to a broker. The broker enforces a degree of isolation between message flows in distinct execution groups by ensuring that they run in separate address spaces, or as unique processes.
Each execution group is started as a separate operating system process, providing an isolated runtime environment for a set of deployed message flows. Within an execution group, the assigned message flows run in different thread pools.
34
Message Flow Deployment
deployment WebSphere Message Broker
«Broker»J PRASE_BRK
«executionEnvironment,Execution Group»default
jPrase.bar
«Message Set»jPraseMessageSet
«Message Flow»jPrase
35
Message Routing
36
Message Routing Example cmp MQ Routing
«Broker»J PRASE_BRK
«MQI nput Node»MQ Input
«MQOutput Node»MQ Output
«J ava MQ Client»Producer
«Queue Manager»QM_J PRASE
«Local Queue»INPUT
«Local Queue»OUTPUT
«Local Queue»UPRASE
«Local Queue»J PRASE
«Route Node»Route
«MQOutput Node»MQ jPrase
«MQOutput Node»MQ uPrase
«xml»message
MQPUT
«tcp»
«send»
37
Java Compute Node
38
Java Compute Node Example cmp Jav a Compute
«Broker»J PRASE_BRK
«MQI nput Node»MQ Input
«MQOutput Node»MQ Output
«J ava MQ Client»Producer
«Queue Manager»QM_J PRASE
«Local Queue»INPUT
«Local Queue»OUTPUT
«xml»message
«J ava MQ Client»Consumer
«J avaCompute Node»J ava Compute
«xml»reverse message
MQPUT
«tcp»
«send»
MQGET
«tcp»
«receive»
39
Web Services Nodes
Service� SOAPInput� SOAPReply
Client� SOAPRequest� SOAPAsyncRequest� SOAPAsyncResponse
40
Web Service Example, flow
41
Web Service Example, components cmp Web Serv ice
«J ava MQ Client»Consumer
«WebService»soapUI
«Broker»J PRASE_BRK
«MQI nput Node»MQ Input
«Compute Node»XmlToSoap
«SOAPRequest Node»SOAP Request
«Compute Node»SoapToXml
«MQOutput Node»MQ Output
«J ava MQ Client»Producer
«Queue Manager»QM_J PRASE
«Local Queue»INPUT
«Local Queue»OUTPUT
«xml»request message
«xml»response message
MQPUT
«tcp»
request
«soap»
response
«soap»
MQGET
«tcp»
«send»
«receive»
42
Sources
Enterprise Integration Patterns: Designing, Building and Deploying Messaging Solutions. Gregor Hope, Bobby Woolf.
WebSphere MQ Helphttp://publib.boulder.ibm.com/infocenter/wmqv7/v7r0/index.jsp
WebSphere Message Broker Helphttp://publib.boulder.ibm.com/infocenter/wmbhelp/v7r0m0/index.jsp
43