Saturday, April 25, 2009

IBM Websphere MQ History

Developed in Scotland, Telecommunications Access Method (TCAM) came along in 1971 with the birth of TSO. It supported asynchronous messaging, as with MQ. TCAM 3.0 added in reusable disk message queues for recovery soon thereafter, as with MQ. A high-level PL/I program could be used to access TRANSIENT datasets (dynamic message queues). Reading a message from a transient dataset resulted in that message is removed from the queue, as with a non-browse READ with MQ. With the advent of computers, IBM saw an opportunity to apply new technology to the need for message switching. In the early 1960s, IBM marketed computer-like devices, such as the 7740 and 7750 message switching systems.

The IBM System/360 was announced in April 1964 and with it came communication access methods such as BTAM and QTAM (Basic and Queued Telecommunications Access Methods). In the late 1960s, still another communication access method became available and it was known as TCAM, the Telecommunications Access Method. TCAM offered its users a more advanced form of message switching or message routing. TCAM was widely accepted, especially in the financial and brokerage industries.

In the late 1960s, transaction management systems came into being, each trying to achieve a leadership position in the industry. Within IBM, CICS and IMS were chosen as strategic products to address the need for transaction management. Within both CICS and IMS, each had its version of message switching, IMS being a front-end queued system and CICS having its Transient Data facility as the possible basis for message switching.

CICS established itself as a popular transaction management system in the 1968-1971 timeframe, those users who had adopted TCAM for its message handling capabilities, now wanted a combined use of TCAM with CICS. In December 1971, IBM announced CICS support of TCAM as part of the CICS/OS-Standard product, to be delivered in December 1972. For interested customers, this enabled them to use TCAM for its message handling strengths and also have TCAM-connected terminals or computers interface with CICS online applications.

In January 1973, TCAM continued to be supported by CICS/OS-Standard Version 2.3. However, TCAM support was omitted from the initial release of CICS/VS, announced in February 1973 and delivered in June 1974. Needless to say, many CICS-TCAM customers were not happy with that product direction.

With considerable pressure from CICS-TCAM customers, the CICS support of TCAM was reinstated in the CICS/VS 1.1 product, as of September 1974. In addition to the previous DCB support, with this reinstatement of TCAM support, CICS began to support TCAM access via VTAM, also known as the ACB support. CICS TCAM ACB support was discontinued as of the CICS/ESA Version 3 product in 1990.

In 1992, IBM announced a new product family called WebSphere MQ. WebSphere MQ was to be the extension of TCAM functionality from IBM-only systems to all other platforms. WebSphere MQ had an architecture which enabled heterogeneous systems to communicate with each other (e.g. IBM, HP, Sun, Tandem, etc). WebSphere MQ can be used with CICS systems to send and receive data to/from any other MQ-eligible system. WebSphere MQ can be used to initiate work in a CICS system or a CICS transaction can initiate work in another CICS or non-CICS system.

WebSphere MQ now supports 80 different environments and has become the leading message switching/routing product in the industry.

IBM Websphere MQ Features

WebSphere MQ provides assured one-time delivery of messages across a wide variety of platforms. The product emphasizes reliability and robustness of message traffic, and ensures that a message should never be lost if MQ is appropriately configured.

It needs to be remembered that a message in the context of MQ has no implication other than a gathering of data. MQ is very generalized and can be used as a robust substitute for many forms of intercommunication. For example, it can be used to implement reliable delivery of large files as a substitute for FTP.

MQ provides application designers a mechanism to achieve non-time-dependent architecture. Messages can be sent from one application to another, regardless of whether the applications are running at the same time. If a message receiver application is not running when a sender sends it a message, the queue manager will hold the message until the receiver asks for it. Ordering of all messages is preserved, by default this is in FIFO Order of receipt at the local queue within priority of the message.

It provides a means for transforming data between different architectures and protocols, such as Big Endian to Little Endian, or EBCDIC to ASCII. This is accomplished through the use of message data "exits". Exits are compiled applications which run on the queue manager host, and are executed by the WebSphere MQ software at the time data transformation is needed.

WebSphere MQ allows receipt of messages to "trigger" other applications to run, and thus provides the framework for a message driven architecture.

It implements the JMS standard API, and also has its own proprietary API, known as the Message Queuing Interface.

Unlike email, MQ itself is responsible for determining the destination of messages by the definition of queues, so processing of sent messages can be moved to a different application at a different destination. MQ provides a robust routing architecture, allowing messages to be routed via alternative paths around a network of MQ managers. MQ can be implemented as a cluster, where multiple MQ implementations share the processing of messages to allow higher performance and load balancing.

Monday, April 20, 2009

Oracle Fusion Middleware Components

Oracle Fusion Middleware Components

Enterprise Application Server Weblogic Server Oracle Application Server Integration & Process Management BPEL Process Manager Business Activity Monitoring Business Rules Enterprise Connectivity (Adapters) Enterprise Messaging Service Enterprise Service Bus Oracle Application server B2B Service Registry Web Services Manager Development Tools Application Development Framework JDeveloper SOA Suite TopLink Forms Services Developer Suite Business Intelligence Business Intelligence 10g[7] Business Activity Monitoring Discoverer Data Hubs BI Publisher Reports Services Systems Management Enterprise Manager 10g Web Services Manager User Interaction Beehive Collaboration Suite Portal Oracle Webcenter Real-Time Collaboration Unified Messaging Workspaces Content Management Web content management Records management Enterprise search Digital asset management Email archiving Identity management Identity Management Enterprise Single sign-on Identity Manager Oracle Access Manager Oracle Adaptive Access Manager Grid Infrastructure Services Registry Application Server Security

IBM Websphere MQ Processes

IBM Websphere MQ Processes

Processes AMQMTRBN . amqhasmn.exe - the logger. amqmsrvn.exe - COM server. amqmtbrn.exe - . amqpcsea.exe - the command server. amqrmppa.exe - channel process. amqrrmfa.exe - repository process (for clusters). amqsvc.exe - . amqxssvn.exe - shared memory server(s). amqzdmaa.exe - deferred message processor.amqzfuma.exe - OAM process. amqzlaa0.exe - queue manager agents (LQM agents). amqzllp0.exe - checkpoint processor. amqzxma0.exe - processing controller. runmqchi.exe - channel initiator. runmqlsr.exe - listener.


Description of MQ tasks :When a queue manager is running, you see some or all of the following batch jobs running under the QMQM user profile in the MQ subsystem.Job name Function AMQALMPX The checkpoint processor that periodically takes journal checkpoints. AMQCLMAA Non-threaded TCP/IP listener. AMQCRSTA TCP/IP-invoked channel responder. AMQCRS6B LU62 receiver channel and client connection (see note). AMQFCXBA Broker worker job. AMQPCSEA PCF command processor. Handles PCF and remote administration requests. AMQRMPPA Channel process pooling job. AMQRRMFA Repository manager for clusters. AMQZDMAA Deferred message handler. AMQZFUMA Object authority manager (OAM). AMQZLAA0 Queue manager agents that perform the bulk of the work for applications that connect to the queue manager using MQCNO_STANDARD_BINDING. AMQZLAS0 Queue manager agent. AMQZXMA0 The execution controller is the first job started by the queue manager. Deals with MQCONN requests. Starts agent processes to process MQ API calls. AMQZMGR0 Process controller. Used to start up and manage listeners and services. AMQZMUC0 Utility manager. Do critical utilities, as the journal chain manager. AMQZMUR0 Utility manager. Do critical utilities, as the journal chain manager. RUNMQBRK Broker control job. RUNMQCHI The channel initiator. RUNMQCHL Sender channel job that is started for each sender channel. RUNMQDLQ Dead letter queue handler. RUNMQLSR Threaded TCP/IP listener. RUNMQTRM Trigger monitor.End the processes in the following order:amqzmuc0 Critical process manager amqzxma0 Execution controller amqzfuma OAM process amqzlaa0 LQM agents amqzlsa0 LQM agents amqzmur0 Restartable process manager amqrmppa Process pooling process amqrrmfa The repository process (for clusters) amqzdmaa Deferred message processor amqpcsea The command server
Posted by Block for Websphere MQ at 4:08 AM 0 comments
Labels:

What is Channel?
A channel is a communication link used by distributed queue managers. There are two categories of channel in MQ: Message channels, which are unidirectional, and transfer messages from one queue manager to another. MQI channels, which are bidirectional, and transfer MQI calls from a MQ client to a queue manager, and responses from a queue manager to a MQ client. There are two types of MQI channel : server-connection and client-connection. MQ 6.0, "Application Programming Guide", SC34-6595-01, page 45 [65/601] The definition of each end of a message channel can be one of the following types: Sender Receiver Server Requester Cluster sender Cluster receiver Do not confuse message channels with MQI channels. There are two types of MQI channel : server-connection and client-connection. A message channel is defined using one of these types defined at one end, and a compatible type at the other end. Possible combinations are: Sender - Receiver Requester - Server Requester - Sender (callback) Server - Receiver (server is used as a sender) Client-connection with Server-connection Cluster sender-cluster receiver MQ v 6.0, "Intercommunication", SC34-6587, page 8 [30/573]. Server / Requester use Supose we have this environment, where firewall prevents QM2 to start a normal Sender-Receiver channel from QM2.TO.QM1, but not TCP connections from QM1 to QM2. .-----. .---. .-----. QM1 <===== F <======= QM2 .-----. .---. .-----. We shall use a SERVER channel at QM2 and a REQUESTER channel at QM1. In this way, the data can flow from QM2 to QM1, and the channel is started from QM1. SVRCONN A server connection channel object defines the name of a channel that a client can use to connect to a queue manager and the attributes of the MCA that hosts that connection. CLNTCONN This is different to all other channel types, because it is never used by the queue manager itself. Instead, an entry is added to a client channel definition table (CCDT) file, which can be distributed to other machines and used by client applications to configure their MCAs. How to start A channel can be caused to start transmitting messages in one of four ways. It can be: Started by an operator (not receiver, cluster-receiver or server-connection channels). Triggered from the transmission queue (sender, and fully-qualified server channels only). You will need to prepare the necessary objects for triggering channels. Started from an application program (not receiver, cluster-receiver or server-connection channels). Started remotely from the network by a sender, cluster-sender, requester, server, or client-connection channel. Receiver, cluster-receiver and possibly server and requester channel transmissions, are started this way; so are server-connection channels. The channels themselves must already be started (that is, enabled). In Windows systems, start a listener as a background process at the receiver end of each channel. On the source queue manager, type: runmqlsr -t TCP -m source.queue.manager On the target queue manager, type: runmqlsr -t TCP -m target.queue.manager Then start the channels, again as background processes: On the source queue manager, type: runmqchl -c source.to.target -m source.queue.manager On the target queue manager, type: runmqchl -c target.to.source -m target.queue.manager System Administration, page 63 [87 of 567] Auto-Magic If you want the first message put in the queue DESA4 to start the associated transmit channel DESA3.DESA4, then define the queue this way : def ql(DESA4) usage(xmitq) maxmsgl(104857600) + trigger TRIGTYPE(EVERY) TRIGDPTH(1) + trigdata(DESA3.DESA4) + /* channel name */ initq(SYSTEM.CHANNEL.INITQ) replace /* mandatory */ The TrigData attribute must contain the name of the channel to be triggered. The InitQ must be SYSTEM.CHANNEL.INITQ

Sunday, April 19, 2009

What is Channel?

A channel is a communication link used by distributed queue managers. There are two categories of channel in MQ:

Message channels, which are unidirectional, and transfer messages from one queue manager to another.

MQI channels, which are bidirectional, and transfer MQI calls from a MQ client to a queue manager, and responses from a queue manager to a MQ client.

There are two types of MQI channel : server-connection and client-connection.
MQ 6.0, "Application Programming Guide", SC34-6595-01, page 45 [65/601]
The definition of each end of a message channel can be one of the following types:
Sender
Receiver
Server
Requester
Cluster sender
Cluster receiver
Do not confuse message channels with MQI channels. There are two types of MQI channel : server-connection and client-connection.
A message channel is defined using one of these types defined at one end, and a compatible type at the other end. Possible combinations are:
Sender - Receiver
Requester - Server
Requester - Sender (callback)
Server - Receiver (server is used as a sender)
Client-connection with Server-connection
Cluster sender-cluster receiver
MQ v 6.0, "Intercommunication", SC34-6587, page 8 [30/573].
Server / Requester use
Supose we have this environment, where firewall prevents QM2 to start a normal Sender-Receiver channel from QM2.TO.QM1, but not TCP connections from QM1 to QM2.
.-----. .---. .-----. QM1 <===== F <======= QM2 .-----. .---. .-----.
We shall use a SERVER channel at QM2 and a REQUESTER channel at QM1. In this way, the data can flow from QM2 to QM1, and the channel is started from QM1.

SVRCONN
A server connection channel object defines the name of a channel that a client can use to connect to a queue manager and the attributes of the MCA that hosts that connection.

CLNTCONN
This is different to all other channel types, because it is never used by the queue manager itself. Instead, an entry is added to a client channel definition table (CCDT) file, which can be distributed to other machines and used by client applications to configure their MCAs.

How to start
A channel can be caused to start transmitting messages in one of four ways. It can be:
Started by an operator (not receiver, cluster-receiver or server-connection channels).
Triggered from the transmission queue (sender, and fully-qualified server channels only). You will need to prepare the necessary objects for triggering channels.
Started from an application program (not receiver, cluster-receiver or server-connection channels).

Started remotely from the network by a sender, cluster-sender, requester, server, or client-connection channel. Receiver, cluster-receiver and possibly server and requester channel transmissions, are started this way; so are server-connection channels. The channels themselves must already be started (that is, enabled).

In Windows systems, start a listener as a background process at the receiver end of each channel.
On the source queue manager, type:
runmqlsr -t TCP -m source.queue.manager
On the target queue manager, type:
runmqlsr -t TCP -m target.queue.manager
Then start the channels, again as background processes:
On the source queue manager, type:
runmqchl -c source.to.target -m source.queue.manager
On the target queue manager, type:
runmqchl -c target.to.source -m target.queue.manager
System Administration, page 63 [87 of 567]
Auto-Magic
If you want the first message put in the queue DESA4 to start the associated transmit channel DESA3.DESA4, then define the queue this way :
def ql(DESA4) usage(xmitq) maxmsgl(104857600) + trigger TRIGTYPE(EVERY) TRIGDPTH(1) + trigdata(DESA3.DESA4) + /* channel name */ initq(SYSTEM.CHANNEL.INITQ) replace /* mandatory */
The TrigData attribute must contain the name of the channel to be triggered. The InitQ must be SYSTEM.CHANNEL.INITQ