Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache camel Apache Camel中用于保存死信消息的嵌入式持久性解决方案_Apache Camel - Fatal编程技术网

Apache camel Apache Camel中用于保存死信消息的嵌入式持久性解决方案

Apache camel Apache Camel中用于保存死信消息的嵌入式持久性解决方案,apache-camel,Apache Camel,驼峰API是否附带任何嵌入式持久性解决方案?我想保存我的死信邮件。这可以通过DB或JMS队列完成,但我希望在发送到客户端时避免使用它。 我在《骆驼在行动》中读到了HawtDB。但它似乎与聚合器EIP紧密耦合。稍后,我想创建一个关于所有死信消息的报告,并将其显示给客户端。您可以使用任何持久性组件来保存死信消息(、、等)。对于大多数持久性组件,您不会保存消息本身,而是从中选择(元数据)数据(使用DB4O组件的情况是一个明显的例外) 例如,如果要在消息中发送休眠实体,可以使用: 如果你无法预测你将发送

驼峰API是否附带任何嵌入式持久性解决方案?我想保存我的死信邮件。这可以通过DB或JMS队列完成,但我希望在发送到客户端时避免使用它。

我在《骆驼在行动》中读到了HawtDB。但它似乎与聚合器EIP紧密耦合。
稍后,我想创建一个关于所有死信消息的报告,并将其显示给客户端。

您可以使用任何持久性组件来保存死信消息(、、等)。对于大多数持久性组件,您不会保存消息本身,而是从中选择(元数据)数据(使用DB4O组件的情况是一个明显的例外)

例如,如果要在消息中发送休眠实体,可以使用:

如果你无法预测你将发送什么样的类给死信队列,请考虑使用。DB4O在这方面非常灵活,因为它允许您在队列中存储任何Java对象(无需显式映射,如Hibernate或JPA)

创建嵌入式DB40容器也非常简单:

ObjectContainer db = Db4oEmbedded.openFile(Db4oEmbedded.newConfiguration(), DB4OFILENAME);

但它们都是外部数据库。不是吗?我需要要求客户在这些数据库中为死信消息创建一个单独的表。我试图避免这种情况,并提供camel作为简单的可插拔解决方案。DB4O允许您存储到文件系统。使用SQLLite驱动程序的Hibernate也是如此。@HenryKonsek HawtDBAggregationRepository呢?它现在正在阅读有关此选项的信息。聚合存储库用于持久化聚合的共享状态。正如我对您的问题所理解的,您感兴趣的是死信队列,而不是存储聚合状态。如果你想对你的死信信息进行审计,请使用我在答案中写给你的解决方案:)。@HenrykKonsek你真慷慨。我一定会把我的问题寄给你。
// store any Java object without transformations
errorHandler(deadLetterChannel("db4o:java.lang.Object"))
ObjectContainer db = Db4oEmbedded.openFile(Db4oEmbedded.newConfiguration(), DB4OFILENAME);