JMS 传输 v/s MQ 传输

2022-09-03 14:09:30

我使用Oracle Service Bus(OSB)作为MOM,目标URI是IBM MQ队列。我只想知道哪个是首选的交通工具。OSB 为同一个适配器提供了 2 个适配器,即用于传输的 JMS 适配器和 MQ 适配器。有没有人知道相同的优点和缺点是什么。断续器


答案 1

通常,通过本机 MQI 接口发送消息比使用 JMS 更快。实际上,我怀疑你会看到真正的差异,除非你每天发送大量的消息。但是,除了速度之外,还有其他事情需要考虑。例如,如果您不熟悉MQI应用程序,学习曲线将比JMS陡峭。

当 JMS 标头信息通过 MQ 发送到另一个 JMS 目标时,JMS 标头信息将映射到 MQRFH2 标头。MQRFH2 标头的包含是从您创建的目标对象中驱动的。如果目标是 JMS 端点,则包含标头。

我在下面添加了一个链接,解释了如何映射字段:

  1. 将 JMS 消息映射到 MQI 消息。

实际上,除非您每天发送数百万条消息,否则我认为JMS在WebsphereMQ上的性能将足以满足您的需求。至于请求回复中的线程阻塞,我认为您不必担心这一点。缺省情况下,WebsphereMQ 中的应答由单独的线程使用,而不是请求线程。


答案 2

只是想添加我发现对我有用的东西。创建队列实例时,您必须执行以下操作。

Queue queue = queueSession.createQueue("queue:///" + queueName + "?targetClient=1");
//Send w/o MQRFH2 header (i.e. receiver is not a JMS client but just MQ)

包含“?targetClient=1”会导致原始消息在没有标头的情况下发送。

希望这有助于某人。马克


推荐