我正在从activeMq嵌入式代理队列中收听消息(说原始消息)。此消息首先移至通道,然后传递给路由器,并根据条件将其传递给聚合器.Aggregator等待另一条消息,然后将部分或聚合消息传递给服务激活器类。
基于某些逻辑激活器类决定抛出异常,我们希望在我们配置ActiveMQ代理端重新传输插件时再次重新发送消息。
没有聚合器消息正在被正确地重新传递并且如果最大重试达到则移动到DLQ但是如果聚合器进入图像则其未被重新传送。 我不确定,但我认为聚合消息与原始消息不同,这就是由于消息聚合而不是原始消息,因此代理无法再将该消息移动到队列中。
有没有办法处理这种情况,并启用重新传递或任何其他方式来将两个原始消息传递给聚合器,以便再次将它们移动到队列以便再次监听,然后再由代理移动到DQL?
答案 0 :(得分:0)
您的问题不明确 - 如果邮件到达聚合器,则会将其存储以用于聚合目的;从JMS交付的角度来看,它是成功的。
您无法追溯“拒绝”已经从经纪人的角度接受的JMS消息。
如果我理解你的要求,你需要一个具有并发性的监听器容器> 1(所以可以处理第二条消息)和服务激活器(不是聚合器)调用自己的代码来保持第一个线程,直到第二个线程到达为止;如果您的情况发生,请拒绝这两条消息。