Java 如何在Activemq jms队列中设置消息ID?

Java 如何在Activemq jms队列中设置消息ID?,java,jms,activemq,Java,Jms,Activemq,我已经下载了activemq 5.8.0版,并编写了用于创建队列的示例程序。我成功地向队列发送了一条示例消息 之后,我尝试将消息ID设置为特定消息。消息ID可用于检索特定消息。我尝试使用message.setJMSMessageID(“1234”)设置消息ID 但它不起作用。在使用getJMSMessageID()打印消息时设置消息ID后,它会打印随机值 如何将消息ID添加到队列消息?根据规范,用户无法设置JMSMessageID值。它是特定于JMS提供者的 When a message is

我已经下载了activemq 5.8.0版,并编写了用于创建队列的示例程序。我成功地向队列发送了一条示例消息

之后,我尝试将消息ID设置为特定消息。消息ID可用于检索特定消息。我尝试使用
message.setJMSMessageID(“1234”)设置消息ID

但它不起作用。在使用
getJMSMessageID()
打印消息时设置消息ID后,它会打印随机值


如何将消息ID添加到队列消息?

根据规范,用户无法设置JMSMessageID值。它是特定于JMS提供者的

When a message is sent, JMSMessageID is ignored. When the send method returns
it contains a provider-assigned value.

您可以为每条消息设置参数:

message.setStringProperty("property_name",property_val);

这样,您可以在生产者和消费者之间传递参数。

Thank.Aniket.是否可以基于JMS提供者设置消息ID??我想输入消息id。还有其他可能的吗?您能解释一下吗?不,客户端应用程序不可能设置JMSMessageID。因此,如果您想关联消息,那么可以使用特定于客户端应用程序的JMSCorrelationID。是的。我使用了correlationID而不是messageID。但问题是correlationID不是唯一的。您可以为单个关联指定多条消息。现在它会创建一个副本。如何查找和检索特定的消息消息??如果您使用相同的会话来创建发送方和接收方,那么您可以记下消息发送后设置的JMSMessageID,然后在检索时检查相同的JMSMessageID。或者,如果您要检索特定消息,则在发送时设置一些唯一的头属性,例如
message.setStringProperty(id)
,然后使用消息选择器检索消息。
message.setStringProperty("property_name",property_val);