gpt4 book ai didi

java - JMS MessageProducer.setTimeToLive() 与 TextMessage.setJMSExpiration()

转载 作者:搜寻专家 更新时间:2023-11-01 01:25:41 26 4
gpt4 key购买 nike

调用 MessageProducer.setTimeToLive() 与调用 TextMessage.setJMSExpiration() 有区别吗?

我可以从文档中看到 javax.jms.MessageProducer.setTimeToLive()说是

Sets the default length of time in milliseconds from its dispatch time that a produced message should be retained by the message system.

还有那个javax.jms.Message.setJMSExpiration()说是

Sets the message's expiration value.

这些对我来说听起来是一样的。我应该继续将两者设置为相同的值吗?

最佳答案

您不应为 Message(或 TextMessage,如您的示例)设置过期设置。来自 Java EE 5 Javadocs 的文本令人困惑,并且在 recent versions 中得到了改进:

This method is for use by JMS providers only to set this field when a message is sent. This message cannot be used by clients to configure the expiration time of the message. This method is public to allow a JMS provider to set this field when sending a message whose implementation is not its own.

这意味着您不应使用 Message#setJMSExpiration() 来设置消息过期时间,因为提供者将在发送消息时覆盖该值。

您应该改为使用其 MessageProducer 为所有使用 MessageProducer#setTimeToLive() 的消息设置超时,或者,如果您只想为特定消息设置到期时间,使用 MessageProducer#send(Message, int, int, long) 这样做,如 Shashi 的回答所示。只有在这种情况下,“每条消息”设置才会覆盖 MessageProducer 的设置。

关于java - JMS MessageProducer.setTimeToLive() 与 TextMessage.setJMSExpiration(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31709353/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com