1

所以我让我的 ActiveMQ 接收来自另一个位置的消息 woo hoo - 今天早上这里有快乐的舞蹈!

现在,一旦消息到达队列,我需要对消息采取后续步骤。

具体来说,根据文件名,如果可能发生这种情况,则需要将其发送到另一个队列或直接发送到另一个进程。

例如,发送一个文件,其中包含有关法庭会议更改的信息。我需要阅读该 XML 并更新一些本地 MySQL 表。开庭过程可以是网络服务吗?理想情况下,我只想将文件传递给该服务。

发送了另一个文件,其中包含有关取消授权的信息,我需要将该文件中的信息发送到外部 Oracle 数据库上的存储过程。我可以从文件名中看出该文件应该发送到的下一个过程是什么。

所以,我正在寻找关于我最好的行动方案是为发送到我们队列的文件设置额外处理的建议?

非常感谢!!!顺便说一句 - 我们已经订购了“ActiveMQ in Action”和“Camel in Action”,我将阅读这些内容,但现在,我们将不胜感激任何具体的新手指导。

莱斯利

4

1 回答 1

2

Camel基于内容的路由器正是您所寻找的。它允许您根据消息正文/标题/属性设置路由规则...

这是一个基本示例,它从入站队列中读取数据,并根据标头简单地委托给其他队列......

   from("activemq:queue:inboundQueue")
        .choice()
            .when(header("foo").isEqualTo("bar"))
                .to("activemq:queue:barQueue")
            .when(header("foo").isEqualTo("cheese"))
                .to("activemq:queue:cheeseQueue")
            .otherwise()
                .to("activemq:queue:generalQueue");

除了检查消息头之外,您还可以检查正文和属性(使用简单的表达式、xpath等)以确定正确的路由等...

于 2012-04-06T15:21:40.513 回答