Camel-JPA:标记为已消耗的实体(不更新表记录)

时间:2012-11-22 15:12:24

标签: jpa apache-camel

我被困(再次;-)与一些JPA相关的问题,并希望这里的任何人都能提供帮助(Camel in Action不能......):

我使用namedQuery从JPA端点使用。 我无法删除消费的条目,因此我使用“consumeDelete = false”选项。

但是如何防止多次读取相同的条目? 我知道“@consumed”注释,但由于我不允许修改/更新原始数据库条目,我还没想出如何将条目标记为“消耗”......

有什么想法吗?

感谢, 中号

2 个答案:

答案 0 :(得分:1)

如果您无法改变数据库中的数据以反映您已经消耗了该记录,那么您需要将此信息“存储”在其他位置。

您可以使用幂等消费者EIP模式 http://camel.apache.org/idempotent-consumer.html

然后,您需要使用内存/文件/另一个数据库/表来存储已消耗消息的ID,并将其与幂等消费模式一起使用。

答案 1 :(得分:0)

您可以在实体类中使用任何方法名称的@Consumed,并将字段值更改为您想要的值。例如

@Consumed
public void updateConsumedStatus() {
this.status = false;
}

请在这里查看 http://camel.apache.org/jpa.html