跳到主要内容

消息丢弃通知

通过使用直接传输的非持久消费者接收消息的客户端应用程序可以检测事件代理是否丢弃了当前接收消息之前发送的任何非持久化消息。

要检测使用直接传输发送的非持久化消息的丢弃指示状态,请调用 message.getBooleanProperty(SupportedProperty.SOLACE_JMS_PROP_MSG_DISCARD_INDICATION)。如果调用返回 true,则事件代理已丢弃当前消息之前的一个或多个消息;如果调用返回 false,则在当前消息之前没有消息丢失。

当客户端应用程序检测到已发生消息丢弃时,它应适当地处理此事件。例如,它可以遵循其常规的会话重新初始化过程。

如果事件代理的每个客户端优先级队列被接收到的消息填满,则可能会发生消息丢弃。当这种情况发生时,队列上最旧的消息可能会被丢弃,以便新的传入消息可以入队。在“慢速订阅者”没有足够快地消费消息的情况下,可能会导致每个客户端的优先级队列被填满。有关每个客户端的优先级队列以及如何配置它们的更多信息,请参阅消息传递资源。