【发布时间】:2015-06-19 06:29:23
【问题描述】:
当我们定义像 SDR 通道这样的消息通道时,我们将 MCATYPE 作为 PROCESS。因此,当消息到达传输队列时,进程将通过充当代理 (MCA) 来启动通道。
AMQ8414:显示通道详细信息。 通道(SYSTEM.DEF.SENDER) CHLTYPE(SDR) MCATYPE(进程)
如果是这样,对于 MQI 通道,MCA 是什么,通道将如何开始让消息处理到应用程序端?
【问题讨论】:
当我们定义像 SDR 通道这样的消息通道时,我们将 MCATYPE 作为 PROCESS。因此,当消息到达传输队列时,进程将通过充当代理 (MCA) 来启动通道。
AMQ8414:显示通道详细信息。 通道(SYSTEM.DEF.SENDER) CHLTYPE(SDR) MCATYPE(进程)
如果是这样,对于 MQI 通道,MCA 是什么,通道将如何开始让消息处理到应用程序端?
【问题讨论】:
MCATYPE 有两个可能的值,PROCESS 或 THREAD。这告诉MQ产品如何运行通道,即是作为PROCESS运行,即runmqchl进程,还是作为池进程的线程运行,即amqrmppa进程。这仅适用于出站渠道,即开始或发起渠道对话的渠道。 (它也适用于集群接收器,其唯一目的是从中构建集群发送器通道,集群接收器本身不使用该属性。
对于入站渠道类型不适用。对于入站通道,线程和进程的选择方式是线程,使用普通的MQ Listener(这是推荐的方式),进程,使用inetd。
因此,对于 MQI 通道,即 SVRCONN 通道类型,它们将作为池进程的线程运行,除非您使用 inetd。一般不推荐使用inetd。
它们由侦听进程(MQ 侦听器或inetd)启动,捕获套接字创建,并将其交给进程(amqrmppa 或amqcrsta)以接受和接收数据。
【讨论】:
MQI 通道用于将客户端应用程序连接到队列管理器。当调用 MQCONN/MQCONNX(或者它在其他语言中的 OO 等价物,如 C++/C#/Java)API 被调用时,通道开始。
MQI 通道属于 SVRCONN 类型。 MCATYPE 对 SVRCONN 通道无效。它适用于 Sender/Server/Request/Cluster-sender/Cluster-receiver 通道类型。更多详情here.
【讨论】: