当前位置: 首页 > 知识库问答 >
问题:

具有 JMS 队列和 MQ 队列的 Websphere

阮飞翔
2023-03-14

我是 IBM Websphere MQ 服务器的新手,在使用它时几乎没有问题。我正在使用MQQueueConnectionFactory将消息发送到队列。这是我的代码

MQQueueConnectionFactory connectionFactory = null;
QueueConnection queueConn = null;
QueueSession queueSession = null;
QueueSender queueSender = null;
TextMessage message = null;

try
{
    connectionFactory = new MQQueueConnectionFactory();
    connectionFactory.setHostName("192.16.34.45");
    connectionFactory.setPort(1415);
    connectionFactory.setTransportType(1);
    connectionFactory.setQueueManager("MQSLLXQ1");
    connectionFactory.setChannel("TO.MQSLLXQ1");

    queueConn = connectionFactory.createQueueConnection("username", "password");
    queueSession = queueConn.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
    queueSender = queueSession.createSender(queueSession.createQueue("TestQueue"));
    queueSender.setDeliveryMode(DeliveryMode.PERSISTENT);
    message = queueSession.createTextMessage("Test Message");
    queueSender.send(message);
    queueConn.close();

} catch (Exception je) {
    je.printStackTrace();
}

在带有 JMS 标头的 MQ 队列中可见的消息。

  <mcd><Msd>jms_text</Msd></mcd>
    <jms><Dst>queue:///TestQueue</Dst><Tms>1454047279356</Tms><Div>2</Div></jms>
   Test Message

1) 有没有办法避免这个 jms 标头并仅获取 MQ 队列中的有效负载?

2) 有没有办法同时同步 MQ 队列和 JMS 队列?

共有2个答案

郭坚壁
2023-03-14

如果您有兴趣使用 JMS 向传统的 MQI 应用程序发送消息,那么可以使用 JMS 队列的 TARGCLIENT 选项。请注意,这意味着不会传输某些 JMS 属性。

正如 Shashi 之前所解释的,MQ JMS 队列指向 MQ 队列;它还具有 MQ JMS 代码用来知道如何打开队列的属性、要使用的属性等。

曹和正
2023-03-14

JMS 是一个 API 规范,而不是一个线级协议规范。因此,不同的供应商有自己的实现JMS API规范的方式。IBM MQ(又名 WebSphere MQ)使用 RFH2 标头来实现 JMS API。

1) 如果使用 JMS API 接收消息,则该标头将作为不同的消息属性提供给应用程序。可以使用 message.getBody()(在 MQ v8 中)方法检索有效负载。根据消息的类型,即文本,字节等,您可以使用getText(),readBytes()等方法来检索消息正文。

如果您的接收应用程序使用 MQ API,则可以通过更改队列属性来去除消息标头。

2) 在 IBM MQ 中,JMS 队列实际上指向 MQ 队列。

 类似资料:
  • 我在Weblogic服务器上有MQ作为外部JMS服务器。问题是,我需要回滚消息并重试,直到达到回退阈值。然后我需要将消息移动到回退队列。

  • Jboot 内置了对MQ消息队列的功能支持,使用MQ需要以下几步步骤。 第一步:配置jboot.properties文件,内容如下: # 默认为redis (支持: redis,activemq,rabbitmq,hornetq,aliyunmq等 ) jboot.mq.type = redis jboot.mq.channel = channel1,channel2,channel3 jboot

  • 问题内容: 我有一个带有HornetQ的JBoss-6服务器和一个队列: 有一个不同的消费者(在不同的机器)连接到这个队列中,但只有一个 单一的 消费者是活动的时间。如果我关闭此使用者,则消息将立即由其他使用者之一处理。 由于我的消息需要一些耗时的处理,因此我希望多个使用者同时处理其唯一消息。 我记得在早期版本的JBoss中也有类似的情况,该设置可以正常工作。在Jboss-6中,消息传递系统运行良

  • 我有Weblogic 12.1.2和IBM WebSphere MQ Explorer 7.5.0.2。 在Weblogic中,我创建了: JMS服务器 我有一个JAVA程序,可以向这个队列发送消息。 我想使用MQ Explorer来读取来自此队列的消息。我如何设置它?我应该在MQ Explorer中做什么和如何设置,以连接到此队列?有人能给我一个Web链接吗?我找不到任何有用的东西,但也许我想错

  • 我们最近将应用程序从 Weblogic 迁移到了 JBOSS Fuse。作为此迁移的一部分,我们还必须将 JMS 实现更改为 Active MQ。由于某些约束,将请求发送到旧 Weblogic JMS 队列的客户端将无法进行更改以将请求发送到新的活动 MQ。有没有办法保持客户端不变(仅更改主机和端口以指向新服务器)并接收发送到Weblogic JMS队列的消息(当然没有weblogic服务器)并将

  • 目前我有一个Weblogic 10R3开发的Java EE应用程序主机,我有兴趣测试1个消息驱动Bean。问题是我无法访问Bean正在侦听的外部JMS服务器,以下是MDB代码: 我的计划是,Bean将通过JNDI查找队列,并且我确实可以访问Weblogic托管服务器。因此,我可以删除外部JMS服务器,然后添加一个本地JMS队列和包含确切JNDI名称的connectionFactory。因此,隔离外

  • 主要内容:1 什么是MQ,2 为什么要用 MQ (作用、功能),3 MQ 的分类,4 MQ 的选择1 什么是MQ MQ(message queue),从字面意思来看,本质是一个队列,FIFO 先入先出,只不过队列中存放的内容是 message 而已,还是一种跨进程的通信机制,用于上下游传递消息。 在互联网架构中,MQ 是一种非常常见的上下游 “逻辑解耦 + 物理解耦” 的消息通信服务。使用了 MQ 之后,消息发送上游只需要依赖 MQ ,不用依赖其他服务。 2 为什么要用 MQ (作用、功能)

  • 我有一个关于 IBM MQ 中使用的 .绑定文件的快速问题。我记得绑定文件指定队列名称。如果当前用作本地队列的队列名称后来更改为远程队列,但队列的名称保持不变并且权限也很好,则绑定文件是否正常工作?