我正在尝试使用Apache Camel进行事件搜索。 对于消息传递总线,我正在使用ActiveMQ。
我想审核使用MongoDB作为持久性存储推送到ActiveMQ的每条消息。我曾尝试在ActiveMQ中使用镜像队列。这会将消息推送到与队列同名的主题。 但是我必须实现基于工作程序的(负载平衡)方法。这对于主题是不可能的(不允许重复消息)。 因此,我计划通过窃听模式将ActiveMQ与Camel一起使用。
我可以从窃听目标中提取消息并将其插入到MongoDB中吗,或者有一种方法可以让骆驼直接将其插入到MongoDB中?
答案 0 :(得分:0)
在经纪人方面解决此问题的一种可能方法是使用Composite Destinations。您可以指示代理将发送到队列的消息转发到另一个队列。进行此操作时需要格外小心,因为默认情况下,仅当队列存在时才会发生(目的地的静态配置可以绕过此操作)。有一个选项可以始终转发,也可以选择应用选择器以减少发送的内容。要记住的是,除非您有定期清除审核队列的内容,否则最终将耗尽空间。
您可以按以下方式配置转发:
<compositeQueue name="myQueue" forwardOnly="false">
<forwardTo>
<queue physicalName="myAuditQueue" />
</forwardTo>
</compositeQueue>