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

将 MQMessage MQMD 值复制到 JMS 消息

汪栋
2023-03-14

我有一个要求,我必须将消息 ID、相关 ID、持久性、到期和优先级的值从请求 MQ 消息复制到响应。我使用 RFHUtil 将请求消息放入队列中。但是当消息被会话豆使用时,MQMD 标头的消息 ID 会更改为一些不同的值 -HEXADECIMAL,这与我在 RFHUTIL 中输入的消息 ID 不同。

然后我使用 set 方法将上述值从请求复制到响应消息,- setJMSMessageID 等,但一旦我查看响应消息,值就会不同。这是由于 MQ 到 JMS 的转换吗?有什么解决方案可以解决这个问题。

早些时候,我使用的是 MQ 消息,并且能够将所有字段从请求复制到响应。

共有1个答案

闻人修平
2023-03-14

IBM MQ 中的 MessageID 始终是十六进制的,无论它从哪个 API 设置,基本 MQ 还是 MQ JMS。

发送请求消息时无需设置 MessageID。让 MQ 为您完成此操作。MQ 将为请求消息生成唯一的消息 ID。在会话 Bean 中,您只需将请求消息的消息 ID 复制到响应消息的相关 ID 即可。通过这种方式,您可以关联请求和响应消息。

请参阅 IBM WebSphere MQ 请求/应答场景 以了解更多详细信息。

更新

发送消息时,将忽略使用 setMessageID 方法设置的任何值,但该方法可用于更改收到的消息中的值。

由于发送消息时会忽略 setMessageID 方法设置的消息 ID,因此应用程序无法指定传出消息的消息 ID。因此,应用程序无法接收消息,然后转发相同的消息,或者发送不同的消息,其消息 ID 与收到的消息 ID 相同。请参阅链接:

 类似资料:
  • 在Spring集成中使用出站网关时,我试图在JMS标头中发送回复Q详细信息。我了解到JIRA#INT-97中的增强功能在将Spring消息标头发送到JMS目标之前将其复制到JMS标头。 在将消息发送到出站网关之前,将消息头设置如下。message.getHeader(). setAtcm(JmsTargetAdapter.JMS_REPLY_TO, myReplyDestation); 但是我无法

  • 我们有一个运行在JBoss4上的内部系统,我们希望升级到Wildfly21,因为我们不能永远停留在过去。 我们有两个站点,一个位于东海岸的活动站点,另一个位于西海岸的热备份/故障转移站点,每个站点在集群中都有两个独立的jboss服务器。我们正在使用嵌入式消息传递,目前由mysql支持mysql复制,以保持备份站点的同步,以防我们需要故障转移。 所以-当我们故障转移到其他站点时,我们如何尽最大努力保

  • 我有一个web应用程序,它通过WebLogic中的JMS与其他Java web应用程序通信。 我读到这样的答案:如何从PHP连接Jms? 我安装了ActiveMQ并尝试使用它。但是在Weblogic中,我们需要“jms_factory”和“queue_name”。我想它使用t3协议。

  • 我们需要将消息从一个ActiveMQ代理复制到另一个代理。这里消息必须只是复制,并且消息应该存在于两个代理中。 我可以想到一个自定义应用程序,它订阅某个目标并读取该消息并将消息重新发布到多个代理中的目标。 我没有权限在经纪人中进行更改,所以我想不出经纪人网络选项。 是否有任何最佳实践或工具可用于将A-MQ消息从一个代理复制到另一个代理?

  • 我设置了一个EJB项目,使用JMS将持久性实体对象发送到MDB。我使用JBoss EAP 7,使用Apache ActiveMQ作为消息传递提供程序。我像这样设置ConnectionFactory和队列: 这是我的消息生成器,它接收“Account”实体对象作为参数并将其发送到队列: EntityEnqueueBean。Java语言 MDB从队列接收消息并对其进行处理: java账户 不确定我做错

  • 我是Spring JMS的新手。我的应用程序是使用Spring Boot开发的,并部署在JBoss EAP7.2.0中。我有一个远程队列,它是一个活动的MQ Artemis队列,也嵌入在JBoss EAP7.2.0中。有人能建议我如何使用Spring Boot的JmsTemplate向远程JMS队列发送消息吗?基本上,我不知道应该如何定义远程connectionFactory来连接到远程队列。

  • 那么,在JMS之前,我必须自己将消息转换为POJO吗?我对Camel完全陌生,但我得到的印象是Camel应该自动处理类型转换。

  • 我主要在RPC模式下使用rabbitMq,但我还想将请求和响应消息复制到另一个队列。 最后,我想实现的是,外部消费者可以通过听一个队列来查看所有流量,我们称之为“日志队列”。 复制传入消息是可以的,我只需要使用扇出交换,或者使用与RPC调用使用的路由密钥相同的路由密钥将日志队列绑定到使用过的交换。 但我无法找到通过直接回复功能“扇出”发送的消息的方法。 到目前为止,我了解到响应消息以amqp的形式