SlideShare une entreprise Scribd logo
1  sur  43
WMQ, WMB & EIP


Message-Oriented Middleware



jPrase


Vít Kotačka



29. 3. 2012
© Adastra Group
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




2
Enterprise Integration Patterns




3
Enterprise (Application) Integration


     Enterprise integration is the task of making disparate
      applications work together to produce a unified set of
      functionality.




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




8
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




9
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
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
EIP Basic Patterns Example




12
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




13
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




14
WebSphere MQ




15
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
WebSphere MQ Explorer




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




19
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
Remote Queue Messaging

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




22
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
WMQ classes for Java (configuration)




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




27
WebSphere Message Broker




28
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
WebSphere Message Broker Toolkit




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




32
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
Message Flow Deployment




34
Message Routing




35
Message Routing Example




36
Java Compute Node




37
Java Compute Node Example




38
Web Services Nodes


      Service
        ̶   SOAPInput
        ̶   SOAPReply
      Client
        ̶   SOAPRequest
        ̶   SOAPAsyncRequest
        ̶   SOAPAsyncResponse




39
Web Service Example, flow




40
Web Service Example, components




41
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.jsp




42
43

Contenu connexe

Tendances

Introduction to WebSphere Message Broker
Introduction to WebSphere Message BrokerIntroduction to WebSphere Message Broker
Introduction to WebSphere Message Broker
Ant Phillips
 
JMS Providers Overview
JMS Providers OverviewJMS Providers Overview
JMS Providers Overview
Vadym Lotar
 
Mom those things v1
Mom those things v1 Mom those things v1
Mom those things v1
von gosling
 
Understanding JMS Integration Patterns
Understanding JMS Integration Patterns Understanding JMS Integration Patterns
Understanding JMS Integration Patterns
WSO2
 
Reliable Messaging /Guaranteed delivery
Reliable Messaging /Guaranteed deliveryReliable Messaging /Guaranteed delivery
Reliable Messaging /Guaranteed delivery
WSO2
 
Apache ActiveMQ and Apache ServiceMix
Apache ActiveMQ and Apache ServiceMixApache ActiveMQ and Apache ServiceMix
Apache ActiveMQ and Apache ServiceMix
Bruce Snyder
 
Resume_vaibhav _MQ-3Yr
Resume_vaibhav _MQ-3YrResume_vaibhav _MQ-3Yr
Resume_vaibhav _MQ-3Yr
Vaibhav Birla
 

Tendances (20)

IBM MQ Online Tutorials
IBM MQ Online TutorialsIBM MQ Online Tutorials
IBM MQ Online Tutorials
 
WebSphere Message Broker Training Agenda
WebSphere Message Broker Training AgendaWebSphere Message Broker Training Agenda
WebSphere Message Broker Training Agenda
 
IBM MQ V8 annd JMS 2.0
IBM MQ V8 annd JMS 2.0IBM MQ V8 annd JMS 2.0
IBM MQ V8 annd JMS 2.0
 
Introduction to WebSphere Message Broker
Introduction to WebSphere Message BrokerIntroduction to WebSphere Message Broker
Introduction to WebSphere Message Broker
 
Jms deep dive [con4864]
Jms deep dive [con4864]Jms deep dive [con4864]
Jms deep dive [con4864]
 
IBM MQ Overview (IBM Message Queue)
IBM MQ Overview (IBM Message Queue)IBM MQ Overview (IBM Message Queue)
IBM MQ Overview (IBM Message Queue)
 
An Introduction to the Message Queuing Technology & IBM WebSphere MQ
An Introduction to the Message Queuing Technology & IBM WebSphere MQAn Introduction to the Message Queuing Technology & IBM WebSphere MQ
An Introduction to the Message Queuing Technology & IBM WebSphere MQ
 
IBM WebSphere MQ Introduction
IBM WebSphere MQ Introduction IBM WebSphere MQ Introduction
IBM WebSphere MQ Introduction
 
JMS Providers Overview
JMS Providers OverviewJMS Providers Overview
JMS Providers Overview
 
Mom those things v1
Mom those things v1 Mom those things v1
Mom those things v1
 
Understanding JMS Integration Patterns
Understanding JMS Integration Patterns Understanding JMS Integration Patterns
Understanding JMS Integration Patterns
 
Reliable Messaging /Guaranteed delivery
Reliable Messaging /Guaranteed deliveryReliable Messaging /Guaranteed delivery
Reliable Messaging /Guaranteed delivery
 
WhatsNewInJMS21
WhatsNewInJMS21WhatsNewInJMS21
WhatsNewInJMS21
 
JMS - Java Messaging Service
JMS - Java Messaging ServiceJMS - Java Messaging Service
JMS - Java Messaging Service
 
Java Web Services [2/5]: Introduction to SOAP
Java Web Services [2/5]: Introduction to SOAPJava Web Services [2/5]: Introduction to SOAP
Java Web Services [2/5]: Introduction to SOAP
 
WebSphere MQ tutorial
WebSphere MQ tutorialWebSphere MQ tutorial
WebSphere MQ tutorial
 
Apache ActiveMQ and Apache ServiceMix
Apache ActiveMQ and Apache ServiceMixApache ActiveMQ and Apache ServiceMix
Apache ActiveMQ and Apache ServiceMix
 
Java Web Services [4/5]: Java API for XML Web Services
Java Web Services [4/5]: Java API for XML Web ServicesJava Web Services [4/5]: Java API for XML Web Services
Java Web Services [4/5]: Java API for XML Web Services
 
Windows Communication Foundation
Windows Communication FoundationWindows Communication Foundation
Windows Communication Foundation
 
Resume_vaibhav _MQ-3Yr
Resume_vaibhav _MQ-3YrResume_vaibhav _MQ-3Yr
Resume_vaibhav _MQ-3Yr
 

Similaire à WMQ, WMB and EIP

Enterprise Messaging With ActiveMQ and Spring JMS
Enterprise Messaging With ActiveMQ and Spring JMSEnterprise Messaging With ActiveMQ and Spring JMS
Enterprise Messaging With ActiveMQ and Spring JMS
Bruce Snyder
 
Ibm websphere mq
Ibm websphere mqIbm websphere mq
Ibm websphere mq
Rakeshtoodi
 
Lindsay distributed geventzmq
Lindsay distributed geventzmqLindsay distributed geventzmq
Lindsay distributed geventzmq
Robin Xiao
 
WSO2 Product Release Webinar Introducing the WSO2 Message Broker
WSO2 Product Release Webinar   Introducing the WSO2 Message BrokerWSO2 Product Release Webinar   Introducing the WSO2 Message Broker
WSO2 Product Release Webinar Introducing the WSO2 Message Broker
WSO2
 
IBM Managing Workload Scalability with MQ Clusters
IBM Managing Workload Scalability with MQ ClustersIBM Managing Workload Scalability with MQ Clusters
IBM Managing Workload Scalability with MQ Clusters
IBM Systems UKI
 
Cloud 2010
Cloud 2010Cloud 2010
Cloud 2010
steccami
 
Openstack Basic with Neutron
Openstack Basic with NeutronOpenstack Basic with Neutron
Openstack Basic with Neutron
KwonSun Bae
 
quickguide-einnovator-3-rabbitmq
quickguide-einnovator-3-rabbitmqquickguide-einnovator-3-rabbitmq
quickguide-einnovator-3-rabbitmq
jorgesimao71
 

Similaire à WMQ, WMB and EIP (20)

Practical Wireless Mesh Networks and Their Applications
Practical Wireless Mesh Networks and Their ApplicationsPractical Wireless Mesh Networks and Their Applications
Practical Wireless Mesh Networks and Their Applications
 
Enterprise Messaging With ActiveMQ and Spring JMS
Enterprise Messaging With ActiveMQ and Spring JMSEnterprise Messaging With ActiveMQ and Spring JMS
Enterprise Messaging With ActiveMQ and Spring JMS
 
Rabbit MQ introduction
Rabbit MQ introductionRabbit MQ introduction
Rabbit MQ introduction
 
Ibm websphere mq
Ibm websphere mqIbm websphere mq
Ibm websphere mq
 
Messaging in Java
Messaging in JavaMessaging in Java
Messaging in Java
 
Messaging for Modern Applications
Messaging for Modern ApplicationsMessaging for Modern Applications
Messaging for Modern Applications
 
Lindsay distributed geventzmq
Lindsay distributed geventzmqLindsay distributed geventzmq
Lindsay distributed geventzmq
 
WSO2 Product Release Webinar Introducing the WSO2 Message Broker
WSO2 Product Release Webinar   Introducing the WSO2 Message BrokerWSO2 Product Release Webinar   Introducing the WSO2 Message Broker
WSO2 Product Release Webinar Introducing the WSO2 Message Broker
 
IBM Managing Workload Scalability with MQ Clusters
IBM Managing Workload Scalability with MQ ClustersIBM Managing Workload Scalability with MQ Clusters
IBM Managing Workload Scalability with MQ Clusters
 
Architectures with Windows Azure
Architectures with Windows AzureArchitectures with Windows Azure
Architectures with Windows Azure
 
Spring integration
Spring integrationSpring integration
Spring integration
 
Cloud 2010
Cloud 2010Cloud 2010
Cloud 2010
 
PLNOG 13: Michał Dubiel: OpenContrail software architecture
PLNOG 13: Michał Dubiel: OpenContrail software architecturePLNOG 13: Michał Dubiel: OpenContrail software architecture
PLNOG 13: Michał Dubiel: OpenContrail software architecture
 
RabbitMQ interview Questions and Answers
RabbitMQ interview Questions and AnswersRabbitMQ interview Questions and Answers
RabbitMQ interview Questions and Answers
 
Openstack Basic with Neutron
Openstack Basic with NeutronOpenstack Basic with Neutron
Openstack Basic with Neutron
 
19 08-22 introduction to activeMQ
19 08-22 introduction to activeMQ19 08-22 introduction to activeMQ
19 08-22 introduction to activeMQ
 
quickguide-einnovator-3-rabbitmq
quickguide-einnovator-3-rabbitmqquickguide-einnovator-3-rabbitmq
quickguide-einnovator-3-rabbitmq
 
IBM MQ Basics
IBM MQ BasicsIBM MQ Basics
IBM MQ Basics
 
533-MigratingYourMQIApplicationsToJMS.pdf
533-MigratingYourMQIApplicationsToJMS.pdf533-MigratingYourMQIApplicationsToJMS.pdf
533-MigratingYourMQIApplicationsToJMS.pdf
 
Mq Lecture
Mq LectureMq Lecture
Mq Lecture
 

Plus de Vít Kotačka (8)

Kanban Overview
Kanban OverviewKanban Overview
Kanban Overview
 
Gradle
GradleGradle
Gradle
 
Použití JUnit a Mock frameworků pro testování Java EE architektury
Použití JUnit a Mock frameworků pro testování Java EE architekturyPoužití JUnit a Mock frameworků pro testování Java EE architektury
Použití JUnit a Mock frameworků pro testování Java EE architektury
 
jBPM
jBPMjBPM
jBPM
 
Enterprise Systems Integration
Enterprise Systems IntegrationEnterprise Systems Integration
Enterprise Systems Integration
 
Prototypování v Groovy a Grails
Prototypování v Groovy a GrailsPrototypování v Groovy a Grails
Prototypování v Groovy a Grails
 
Apache Maven
Apache MavenApache Maven
Apache Maven
 
Apache Wicket
Apache WicketApache Wicket
Apache Wicket
 

Dernier

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Dernier (20)

FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 

WMQ, WMB and EIP

  • 1. WMQ, WMB & EIP Message-Oriented Middleware jPrase Vít Kotačka 29. 3. 2012 © Adastra Group
  • 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 2
  • 4. Enterprise (Application) Integration  Enterprise integration is the task of making disparate applications work together to produce a unified set of functionality. 4
  • 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. 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. 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. 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 8
  • 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 9
  • 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. 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. EIP Basic Patterns Example 12
  • 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 13
  • 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 14
  • 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
  • 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. 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 19
  • 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. Remote Queue Messaging class 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. 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 22
  • 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. WMQ classes for Java (configuration) 24
  • 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. 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. 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 jmsConnFact 27
  • 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
  • 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. 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 32
  • 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
  • 38. Java Compute Node Example 38
  • 39. Web Services Nodes  Service ̶ SOAPInput ̶ SOAPReply  Client ̶ SOAPRequest ̶ SOAPAsyncRequest ̶ SOAPAsyncResponse 39
  • 41. Web Service Example, components 41
  • 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.jsp 42
  • 43. 43