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
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
Comments
Post a Comment