Apache camel 使用动态URI及其执行次数进行查询
我想根据系统的主机名和其他一些逻辑来听ActiveMQ主题。我计划为此使用Apache camel 使用动态URI及其执行次数进行查询,apache-camel,Apache Camel,我想根据系统的主机名和其他一些逻辑来听ActiveMQ主题。我计划为此使用pollRich,因此我评估了我的逻辑,并在pollRich中提供了主题名称,但: pollEnrich或enrich不访问当前Exchange的任何数据,这意味着在轮询时,它无法使用您在Exchange上设置的任何现有标头。例如,您不能在Exchange.FILE\u NAME标题中设置文件名,并使用pollEnrich仅使用该文件。为此,必须在端点URI中设置文件名 我怎么能弄明白呢 from("timer://ipc
pollRich
,因此我评估了我的逻辑,并在pollRich
中提供了主题名称,但:
pollEnrich
或enrich
不访问当前Exchange的任何数据,这意味着在轮询时,它无法使用您在Exchange上设置的任何现有标头。例如,您不能在Exchange.FILE\u NAME
标题中设置文件名,并使用pollEnrich
仅使用该文件。为此,必须在端点URI中设置文件名
我怎么能弄明白呢
from("timer://ipc?repeatCount=1")
.. some logic..
.setHeader("topic_no",simple("{{env:HOSTNAME}}"))
.pollEnrich("mqtt:foo?host=tcp://0.0.0.0:1883&subscribeTopicNames=${header.topic_no}/status&clientId=ipc")
.to("log:my?showAll=true&multiline=true");
请不要建议在URI中直接使用主机名。正如我强调的,我还必须计算其他逻辑
- 我还可以使用什么其他选项或方法
- 是继续听这个话题,还是只听一次就结束了李>
pollEnrich
组件将侦听主题,并且每次调用最多使用一条消息
我还可以使用什么其他选项或方法
loop
routeBuilder在运行时创建新路由
循环
将重复该操作。然而,这种方法需要处理比您预期的更多的场景
选择2是一个更好的办法。您在运行时创建一个路由,并且使用者端点URI是passby变量。也就是说,您可以在计算逻辑之后动态创建使用者路由