本主题解释如何配置通过 MQ 传输发送和接收消息的消息代理。在本章节中:
查阅 Adding Necessary Jar Files to the Classpath。
当通过队列交换通讯报文时,我们假设客户端应用程序向目标队列发送请求,而服务器应用程序从队列接收消息。然后,服务器将回复消息发送到第二个队列,供客户端接收。在这种情况下,消息代理充当客户端和服务器之间的“中间人”,这需要在消息传递提供程序上添加两个队列,以促进调解。Parasoft 代理从客户端放置消息的位置接收消息,记录消息内容(如果启用了记录功能),然后将消息放到服务器将接收它的队列中。类似地,服务器将消息发送到一个队列,在这个队列中代理接收它,并记录它(如果启用了记录功能),然后将它放回客户端期待应答响应的队列中。
因此,需要分配两个额外的队列,其中之一是:
只需要修改两个应用程序队列中的一个。
查阅 Configuring Queues For Recording 以获得有关如何在不同场景中配置记录的提示。 |
指定 MQ 设置,如下所示:
如果您在此面板中定义客户端和服务器队列(而不是像 Using Global Queue Managers中描述的那样引用以前定义的队列管理器),请在本地设置区域中输入服务器详细信息。
如果您想配置连接到不同的队列管理器在一个代理(例如,您想要一个特定的代理连接使用部署在两个不同的两个队列,队列管理器),请为您想要使用的每个队列创建一个全局队列管理器,然后选择适当的队列管理器配置代理。 |
指定客户端和服务端队列。您可以在此面板中输入每个连接的设置(通过本地设置选项),或者引用在服务器级别定义的全局队列管理器(有关更多详情,请查阅 Using Global Queue Managers )。
您可以在 Virtualize 服务器上定义一个 MQ 队列,该队列在服务器的 Connections Tab 选项卡中包含 SSL 配置,并通过从下拉菜单中选择全局队列管理器将设置应用于代理。本地设置配置中不支持 SSL 配置。 |
Virtualize 或 SOAtest 将捕获发送给客户端 Put 队列的请求消息,然后将其转发到服务器 Put 队列,以进行处理。服务器 Get 队列是服务器将在其上放置响应消息的队列(处理请求消息之后)。这些消息将被捕获并转发到客户端 Get 队列。
如果希望自定义代理打开队列或将消息放入服务器 put 队列时使用的选项标志,可以在满足下面条件时指定 JVM 系统属性 parasoft.proxy.mq.put.open.options
and parasoft.proxy.mq.put.options
:Virtualize 或 SOAtest 已启动。例如,假设消息包含 MQMD 数据头 putApplicationName 的自定义值。在队列打开选项上设置 MQOO_SET_ALL_CONTEXT 标志,以及在 put 选项上设置 MQPMO_SET_ALL_CONTEXT 标志,将允许消息代理转发定制的 putApplicationName 数据头值。
有关选项标志值,请参阅 IBM mq_queue_get_open_options 和 mq_message_put_options 参数。例如:
soatest.exe -J-Dparasoft.proxy.mq.put.open.options=2052 -J-Dparasoft.proxy.mq.put.options=2064 |
查阅 Configuring Queues For Recording 以获得有关如何在不同场景中配置记录的提示。 |
如果启用了该选项,并且指定了 MQMD.replyToQueueManagerName 和 MQMD.replyToQueueName 的值,那么这些值将确定要将响应发送到的队列管理器和队列名称。
如果需要,请修改 Worker count 设置。
每个工作线程创建自己到 MQ 提供程序的连接。例如,对于 Mq,如果您有 20 个工作线程,则您的 WebSphere MQ Explorer 应该在消息代理正在侦听的请求(get)队列的 Open input count 列中显示值 20。当部署/重新部署代理时,工作线程计数高于默认值 1,则应该在控制台中看到类似“Started x listener(s)”这样的消息(其中 x 是配置的工作线程数量)。 增加工作线程数量可以帮助提高并发下的性能。代理的整个消息处理链是并行的,因此每个工作线程将与其他线程并行地进行消息关联、响应消息生成等操作。但是,要注意,如果提供了较高的工作线程数量,部署/取消部署/重新部署代理将花费更长的时间,因为要创建/销毁的连接更多。此外,MQ 基础设施可能对允许多少并发连接有限制。不应该超过基础设施配置/允许的范围。 worker count 特性相当于 Tomcat server.xml 中的 “maxThreads” 属性。 要更改 server.xml 文件:
|
如果使用默认模式,请填写以下字段:
选项 | 说明 |
---|---|
Host | 指定运行 IBM MQ 的主机名。 |
Port | 指定运行 IBM MQ 的端口。 |
Channel | 指定服务端定义的通道的名称。 |
Queue manager | 指定队列管理器的名称。 |
Username/Password | 如果需要,请输入。 |
如果使用 CCDT 模式,请填写以下字段:
对于本地服务器:
对于远程服务器:
选项 | 说明 |
---|---|
CCDT file | 指定 CCDT 文件的位置(扩展名为 .tab)。 如果代理部署在远程服务器上,请使用文本字段指定 CCDT 文件的相对路径, 因为它将出现在服务器树中的“Workspace files”节点下。 如果代理部署在本地服务器上,则可以使用文件系统或工作空间按钮浏览到文件的位置。如果您正在配置当前部署在本地服务器上但稍后将部署在远程服务器上的代理,则需要在将代理部署到远程服务器之前将 CCDT 文件部署到远程服务器。请查阅 Transferring Files Between the Remote Server and the Local Machine。 |
Queue manager | 指定队列管理器的名称。 |
Username/Password | 如果需要,请输入。 |
在大多数情况下,默认的 CCSID Virtualize 用于连接到 MQ 队列管理器是可以接受的。但是,如果将 MQ 队列管理器配置为使用不同的 CCSID,则会通知您队列管理器不支持 CCSID。
您可以在 JVM 参数中设置以下系统属性,以更改用于连接 MQ 队列管理器的默认 CCSID:
parasoft.mq.environment.ccsid=<CCSID>
您设置的 CCSID 取决于队列管理器的 CCSID 以及 JVM 支持哪些字符集。
还请查阅 其他首选项设置 。
跨特定虚拟化服务器应用的全局队列管理器设置可以在服务器级别定义,然后在这里引用。 有关更多详情,请查阅 Connections Tab 。若要使用全局队列管理器,请从适当的 Queue 框中选择它。使用命名规范列出 MQ 服务器 主机名:队列管理器名
若要查看预定义的全局队列管理器的详细信息,请单击 查看设置。
查阅 Configuring Queues For Recording 以获得有关如何在不同场景中配置队列的提示。