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

ActiveMQ Artemis/RedHat AMQ是否没有正确设置JMS消息ID?

於宏大
2023-03-14

根据JMS规范,我不必在发送时指定消息ID。

当我通过jmsproducer#send()发送消息时,或者当我通过hawt.io控制台创建消息时,我可以看到消息ID被设置为Artemis代理生成的某个内部序列号。

接收具有非空JMS消息ID的消息的唯一方法是从不同的(IBM)消息队列读取消息,并在发送之前将其所有属性复制到Artemis消息。

我已经用AMQ 7.3.0.ga和Apache ActiveMQ Artemis 2.6.2测试了这一点,包括本机(org.Apache.ActiveMQ.Artemis-jms-client)和AMQP(org.Apache.qpid.qpid-jms-client)客户端

是否必须在代理上设置一些配置以使其正确地填充JMS消息ID?

共有1个答案

赏新知
2023-03-14
  1. JMS消息ID通常存储在本地Artemis头中,称为userid
  2. 通过管理控制台发送的消息不填充用户ID
  3. 通过核心JMS客户机发送的消息确实填充消息ID
  4. 通过Qpid客户端发送的消息使用JMS消息ID填充自定义属性NATIVE_MESSAGE_ID
  5. 无法通过JMS获得内部消息ID
  6. 如果您通过Qpid发送消息并通过核心客户机读取消息,或者反之亦然,您将收到一个null JMS消息ID
 类似资料:
  • 我的示例应用程序使用了 spring-boot-starter-activeMQ(2.3.1) spring-boot-starter-web(2.3.1) pring-cloud-starter-sleuth(2.2.3)

  • 为了解决这个问题,我尝试了许多JDK版本,但似乎无论我使用哪个java,结果总是一样的。 MavenReportException:创建存档时出错:无法找到javadoc命令:未正确设置环境变量JAVA_HOME。 我跑了: 导出JAVA_HOME=/usr/lib/jvm/JAVA-8-openjdk-amd64 : MavenReportException:创建存档时出错:无法找到javado

  • 当SSL/TLS客户端接收到具有空DN列表的证书请求消息时,它的正确行为是什么? 这里有两种看起来很自然的可能性:1)发回一个空的证书消息2)从所有可能的证书中选择(或提示用户选择)一个证书 是否有一个正确的行为,或者任一个选项都可以?我的目标是在我的代码(.NET,WCF)中向服务器提供一个证书,并且我正在尝试确定是否需要在客户端进行更改以覆盖不发送证书的看似默认的行为,或者是否需要在服务器端进

  • 我们的应用程序使用各种类型的队列。每次在启动使用队列的应用程序之前,都会进行一次自动预检查,将示例消息写入所需队列并读取(即删除)它,以确认队列设置是否正确。 现在我们也用Kafka。但是在Kafka中,我们不能通过写和读带有主题的消息来进行预检查,因为在启动实际应用程序之前不能删除这些消息,这会“污染”主题。在Kafka中是否有其他自动化的方法,API或命令行脚本来实现这一点?最好使用java或

  • 我是一个初学者程序员,我试图做一个简单的计算器,但由于某种原因,按钮似乎不能正常工作,它们要么消失,填满整个面板,要么设置在错误的位置。奇怪的是,当我悬停并在按钮上点击鼠标时,按钮就会出现。我可能会错过一些非常明显的东西,但请帮助(此外,代码不是很干净)。谢谢你! 主要的 计算器按钮 窗

  • 问题内容: 过去似乎人们在使用Accept标头时遇到问题,但是我不确定我的问题是否与之相关。使用jQuery 1.4.2,我很难通过来获取JSON 。我可以在Firebug中观察请求/响应,问题的根源似乎是有问题的资源根据Accept标头返回不同的结果。即使文档说应该设置它,在Firebug中它也显示为“ / ”-显然,我想要“ application / json”。这是一个已知的错误?我应该设