Published on

Presentation about Enterprise Integration Patterns (EIP), WebSphere MQ (WMQ) and WebSphere Message Broker (WMB).

Published in: Technology
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide


  1. 1. WMQ, WMB & EIPMessage-Oriented MiddlewarejPraseVít Kotačka29. 3. 2012© Adastra Group
  2. 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 Services2
  3. 3. Enterprise Integration Patterns3
  4. 4. Enterprise (Application) Integration  Enterprise integration is the task of making disparate applications work together to produce a unified set of functionality.4
  5. 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.5
  6. 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, StreamMess age, MapMessage)6
  7. 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)7
  8. 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 & Consumer8
  9. 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 Integration9
  10. 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)10
  11. 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)11
  12. 12. EIP Basic Patterns Example12
  13. 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), BlazeDS13
  14. 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: WSDL14
  15. 15. WebSphere MQ15
  16. 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.16
  17. 17. WebSphere MQ Explorer17
  18. 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.18
  19. 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 delivered19
  20. 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).20
  21. 21. Remote Queue Messagingclass WebSphere MQ remote host localhost «executi onEnvi ronment» «executi onEnvi ronment» WMQ remote WMQ local «Queue Manager» «Queue Manager» QM_REMOTE QM_JPRASE «Transmi ssi on Queue» «Remote Queue» «Local Queue» «use» QM_JPRASE SENDER RECEIVER «use» «use» TCP «Dead-Letter Queue» «Recei ver Channel» «Sender Channel» «Dead-Letter Queue» «use» QM_REMOTE.QM_JPRASE DLQ QM_REMOTE.QM_JPRASE DLQ 21
  22. 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 objects22
  23. 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();23
  24. 24. WMQ classes for Java (configuration)24
  25. 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)25
  26. 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);26
  27. 27. WMQ classes for JMS (configuration) deployment JMS Interaction localhost «executi onEnvi ronment» WMQ local «Queue Manager» «Ini ti al Context» QM_JAVA file:/jms «Local Queue» «Desti nati on» JPRASE JPRASE «Server-connecti on Channel» «Connecti on Factory» JAVA.CHANNEL jmsConnFact27
  28. 28. WebSphere Message Broker28
  29. 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.29
  30. 30. WebSphere Message Broker Toolkit30
  31. 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.31
  32. 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 structure32
  33. 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.33
  34. 34. Message Flow Deployment34
  35. 35. Message Routing35
  36. 36. Message Routing Example36
  37. 37. Java Compute Node37
  38. 38. Java Compute Node Example38
  39. 39. Web Services Nodes  Service ̶ SOAPInput ̶ SOAPReply  Client ̶ SOAPRequest ̶ SOAPAsyncRequest ̶ SOAPAsyncResponse39
  40. 40. Web Service Example, flow40
  41. 41. Web Service Example, components41
  42. 42. Sources  Enterprise Integration Patterns: Designing, Building and Deploying Messaging Solutions. Gregor Hope, Bobby Woolf.  WebSphere MQ Help http://publib.boulder.ibm.com/infocenter/wmqv7/v7r0/index.jsp  WebSphere Message Broker Help http://publib.boulder.ibm.com/infocenter/wmbhelp/v7r0m0/inde x.jsp42
  43. 43. 43