我正在尝试使用 Apache Camel 进行事件搜索。 对于消息总线,我使用 ActiveMQ。
用例
我想审核使用 MongoDB 作为持久存储推送到 ActiveMQ 的每条消息。我尝试过在 ActiveMQ 中使用镜像队列。这会将消息推送到与队列同名的主题。 但我必须实现基于工作人员(负载平衡)的方法。这对于主题来说是不可能的(不允许消息重复)。 所以我打算通过窃听模式将 ActiveMQ 与 Camel 结合使用。
期望的输出:
我可以从窃听目的地提取消息并将其插入 MongoDB 吗?或者有没有一种方法可以让 Camel 直接将其插入 MongoDB 中?
最佳答案
在经纪商方面解决此问题的一种可能方法是使用 Composite Destinations 。您可以指示代理将发送到队列的消息转发到另一个队列。执行此操作时需要小心,因为默认情况下,仅当队列存在时才会发生(目标的静态配置可以绕过此问题)。有一个选项可以始终转发,您还可以选择应用选择器来减少发送的内容。要记住的是,除非您定期清除审核队列,否则您最终将耗尽空间。
您可以按如下方式配置转发:
<compositeQueue name="myQueue" forwardOnly="false">
<forwardTo>
<queue physicalName="myAuditQueue" />
</forwardTo>
</compositeQueue>
关于java - 使用 Apache Camel 进行 Apache ActiveMQ 窃听,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56429773/