我正在使用glassfish的默认代理处理jms消息。示例我有一个queueA。
queueA,将收到2种类型的响应:
1。)正常回复 - 意味着服务立即回复,没有任何问题,
2。)过期响应 - 服务回复2天后。
在队列A上,我有一个jms接收器,在5分钟后超时,所以在此之后没有人会接收消息,它会在30秒后超时。问题是,当这个事件发生时,我可以抛出一个事件,以便我可以处理延迟响应吗?
谢谢,
czetsuya
答案 0 :(得分:0)
不幸的是,我发现当事件发生时,glassfish不会抛出任何消息到期操作。我的工作是使用同步和异步的2个队列,如果消息已经消失则将同步读取,然后写入异步队列。
SenderA写入AsynchronousQueueA SenderA开始读取SynchronousQueueResponseS(持续n秒) ReceiverA从SenderA接收消息到AsynchronousQueueA ReceiverA将回复写入SynchronousQueueResponseS 如果失败,则写回复AsynchronousQueueResponseA。
请注意,侦听SynchronousQueueResponseS的线程将在n秒后过期,如果是,则回复将写入AsynchronousQueueResponseA。这是队列到期事件侦听器的解决方案。