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