3

我在我的应用程序中使用 Jboss MQ。

我正在尝试处理重新传递到 JMS 队列的消息。有没有办法可以在消费者收到的原始消息中设置一些值(我第一次收到消息),这样每当重新传递消息时,我就可以读取值并做出一些决定。

如果问题不清楚,请告诉我,我可以尝试详细解释。

4

2 回答 2

6

不,JMS 不能那样工作。

您作为消费者(接收)、生产者(发送)或浏览器(窥视)与队列交互。没有用于恢复已更改消息的操作。如果消费者在回滚的事务中工作,则消息将显示为“放回”,但这只是因为它在队列中等待事务的提交。

理论上,您可以为获取消息的同一个队列创建一个生产者,对其进行修改并将其“发送给您自己”(消息驱动 bean?),但这将是一个不同的消息,仅具有相似的内容。它会排到队列的末尾。当然不建议这样做。

最好将消息数据(至少是您感兴趣的部分)保存在数据库中,以便检测它是新的还是重新传递的。

于 2011-09-15T18:46:39.827 回答
1

企业集成模式 Content Enricher ( 1 ) ( 2 ) 可能会对您有所帮助。

于 2012-11-12T13:03:20.073 回答