Camel API中有没有嵌入式持久化解决方案?我想保存我的死信消息。它可以通过DB或JMS队列来完成,但我希望在向客户发货时避免它。
我在“骆驼在行动”中读到了关于HawtDB的文章。但它似乎与聚合器弹性公网EIP紧密耦合。
稍后,我想创建一个关于所有死信消息的报告,并将其显示给客户端。
发布于 2012-05-25 12:48:25
您可以使用任何持久性组件来保存您的死信消息(Hibernate、JPA、JDBC、DB4O等)。对于大多数持久性组件,您不会保存消息本身,而是从消息中选择(元)数据(值得注意的例外是使用DB4O组件的情况)。
例如,如果要在消息中发送Hibernates实体,则可以使用Hibernate component
from("seda:deadMessageStore").
setBody().groovy("new DeadMessageLog(request.headers, request.body) ").
to("hibernate:com.foo.DeadMessageLog");
errorHandler(deadLetterChannel("seda:deadMessageStore"));
如果无法预测将向死信队列发送哪种类型的类,请考虑使用DB4O component。DB4O在这方面非常灵活,因为它允许您将任何Java对象存储在您的队列中(不需要显式映射,就像Hibernate或JPA那样)。
// store any Java object without transformations
errorHandler(deadLetterChannel("db4o:java.lang.Object"))
此外,创建嵌入式DB40容器也非常简单:
ObjectContainer db = Db4oEmbedded.openFile(Db4oEmbedded.newConfiguration(), DB4OFILENAME);
https://stackoverflow.com/questions/10753762
复制