我正在尝试使用Apache Camel技术并遇到麻烦。

我将Jpa组件的轮询使用者用作from(),并在我的实体上设置@consumed批注,以在流程结束时将其状态更改为“成功处理”。工作正常。

但是,如果发生任何错误,我不想在数据库中设置“成功处理”标志,但是会出现“发生错误”之类的信息。

为了解决这个问题,我创建了一个带有处理器的“死信队列”,该处理器试图更改我正在进行的实体的状态,以便以后保存在数据库中。但是该过程始终被标记为已完成,因此始终会调用@Consumed方法。

所以我的问题是:如果出现错误,如何跳过@Consumed方法?是否有要设置的特定交易所状态?

最佳答案

@Consumed方法可以将Exchange作为参数,您可以在其中检查交换是否失败,并获取引起的异常或其他原因。无论如何,它都应该说明是否成功,然后可以相应地更改实体。

10-01 13:51