【问题标题】:Dynamic from(URI) in CamelCamel中的动态来自(URI)
【发布时间】:2015-05-17 12:47:28
【问题描述】:

我想在运行时创建 from(URI)。我正在使用 twitter-component 来获取用户时间轴的推文。我想从传入消息的正文中获取用户的用户名。

from("direct:twitterinternal")   // body contains username as string
    .from("twitter://timeline/user?type=direct&user=" + "${body}")

camel 是否提供了在运行时创建 URI 的可能性?

【问题讨论】:

标签: twitter dynamic apache-camel consumer


【解决方案1】:

我一般将recipientList模式和simple表达式语言用于动态生产者路由...

from("direct:twitterinternal")
    .recipientList(simple("twitter://timeline/user?type=direct&user=" + "${body}"))

否则,对于动态消费,您有 2 个选项:

【讨论】:

  • 感谢您的回答!!当我按照您的解释使用收件人列表时,twitter 组件充当生产者并将正文作为推文发布在自己的时间线上。
  • 是的,这是用于生产...如果您希望消费者使用消息来触发它,那么您需要使用内容丰富器
  • documentation of the Content Enricher 中我发现了以下语句:pollEnrich 不访问当前 Exchange 的任何数据,这意味着在轮询时它不能使用您可能已在交换。例如,您不能在 Exchange.FILE_NAME 标头中设置文件名并使用 pollEnrich 仅使用该文件。为此,您必须在端点 URI 中设置文件名。 据我了解,不支持动态 uri(因为它们是在编译代码时生成的)。我说的对吗?
  • enrich() API 可以使用来自交换的数据...但不能用于动态 URI(无论如何,还没有,请参阅 issues.apache.org/jira/browse/CAMEL-4596)...I 认为您被轮询消费者卡住了(camel.apache.org/polling-consumer.html)和在那里动态构建 URI...
  • 否则,您始终可以在运行时根据用户输入等以编程方式添加/删除路由...
【解决方案2】:

骆驼 2.16 或更高版本?试试toD

http://camel.apache.org/message-endpoint.html

【讨论】:

  • 不是给消费者的吗?
猜你喜欢
  • 2012-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-27
  • 1970-01-01
  • 2021-07-31
相关资源
最近更新 更多