【问题标题】:Is there an event listener for jms message expiration?是否有 jms 消息过期的事件侦听器?
【发布时间】:2012-08-22 13:33:34
【问题描述】:

我目前正在使用 glassfish 的默认代理处理 jms 消息。示例我有一个 queueA。

queueA,会收到两种响应:

1.) 正常响应 - 表示服务立即回复,没有任何问题,

2.) 过期响应 - 服务在 2 天后回复。

在 queueA 上,我有一个 jms 接收器,它在 5 分钟后超时,所以在那之后没有人会收到消息,它会在 30 秒后超时。问题是,我可以在这个事件发生时抛出一个事件,以便我可以处理延迟响应吗?

谢谢,
切苏亚

【问题讨论】:

  • 仅供参考:WebSphere MQ 可以选择在消息过期时触发通知消息。它们被称为“报告选项”,并且必须在正在发送的消息的标题以及消息过期后需要发送通知消息的队列的名称上。

标签: glassfish jms


【解决方案1】:

不幸的是,我发现当这个事件发生时,glassfish 不会抛出任何消息过期操作。我的解决方法是使用 2 个同步和异步队列,将同步读取,如果消息已经消失,则写入异步队列。

SenderA 写入 AsynchronousQueueA SenderA 开始读取 SynchronousQueueResponseS(持续 n 秒) ReceiverA 从 SenderA 接收消息到 AsynchronousQueueA ReceiverA 向 SynchronousQueueResponseS 写入回复 如果失败,则向 AsynchronousQueueResponseA 写入回复。

请注意,监听 SynchronousQueueResponseS 的线程将在 n 秒后过期,如果过期,回复将被写入 AsynchronousQueueResponseA。这是队列过期事件监听器的解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-20
    • 1970-01-01
    • 1970-01-01
    • 2017-03-16
    • 1970-01-01
    • 1970-01-01
    • 2011-10-09
    • 1970-01-01
    相关资源
    最近更新 更多