jms - WAS Server 和 websphere MQ 为什么需要队列?

标签 jms websphere ibm-mq

我在一个新项目中工作。该项目包括使用 websphere MQ、Websphere 服务器。 我们在 Websphere MQ 中有队列,包括队列管理器。我们还在 Websphere 应用程序服务器中定义了队列和连接工厂。现在,我的问题是为什么我们需要在 websphere 应用服务器中创建队列和连接工厂,即使它们是在 WEBSPHERE MQ 中定义的。我们的应用程序不能直接使用在 Websphere MQ 中定义的队列吗?

请清除我的查询。提前致谢。

最佳答案

实际上,连接工厂在WebSphere MQ 中定义。队列是,但它与您在 WAS 中创建的不同。

当使用 JMS 时,对象有两个接口(interface)。 JMS API 是代码和开发人员看到的接口(interface)。服务提供者接口(interface)是与特定 JMS 传输提供者交互的部分。它需要这两者来创建 JMS 对象,例如 QCF 或 Destination。

当您在 WAS(或任何 JNDI 存储库,就此而言)中创建一个对象定义时,创建的是一个程序可以引用的对象(JMS API 部分),但它也“知道”如何与以及特定的传输提供者(SPI 部分)。因此,当您在 WAS 中定义队列时,它是一个目录条目,指向传输提供程序中定义的实际物理队列,在本例中为 WebSphere MQ。同样,当您定义一个连接工厂时,它也不过是一个符合 JMS API 的目录条目,并且还“知道”如何使用其专有协议(protocol)和有线格式与传输提供者对话。在这种情况下,由于传输提供者是 WebSphere MQ,连接工厂目录条目必须了解 QMgr 名称、主机、端口、 channel 、SSL/TLS 详细信息等信息。

在某些情况下,应用服务器传输提供者(即使用服务集成总线作为 JMS 传输的 WAS),在创建 JMS 对象定义的同时创建物理对象。

反之亦然。在 WebSphere MQ 中,当您使用 WebSphere MQ Explorer 创建队列或主题时,您有机会定义 JMS 对象定义,前提是您已将 WMQ Explorer 配置为与存储托管对象的存储库对话。例如,您可以使用 LDAP 来存储托管对象定义,将 WebSphere MQ Explorer 和 WAS 指向 LDAP 目录并管理那里的所有 JMS 对象。

重申一下,在 WAS 中定义 JMS 对象只会创建目录条目,而不是实际的 WMQ 对象。对于与 WAS 一起使用的任何外部 JMS 传输都是如此。

关于jms - WAS Server 和 websphere MQ 为什么需要队列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13132293/

相关文章:

java - 如何从 WebSphere Liberty 服务器访问管理控制台?

java - Websphere Managesdk.bat -listAvailable/java.io.IOException : Unable to create lock manager

ssl - WebSphere MQ 证书互操作性

ibm-mq - IBM WebSphere MQ V7 MQQueue setTargetClient MQJMS_CLIENT_NONJMS_MQ 已弃用

java - IBM MQ JMS 消息监听器

java - 从 JMS 代码 ActiveMQ 将同一消息发布到多个队列

java - Spring 的 NoClassDefFoundError

java - 对于独立应用程序(对于 Spring JMS),Java main 方法应该是什么?

java - 如何获取 IBM WAS 上 jms 主题中的当前消息数

c# - MQ/JMS setTargetClient 是否有等效的 MQ/XMS