【问题标题】:Camel routes from activemq to rest endpoint从 activemq 到 rest 端点的骆驼路线
【发布时间】:2018-01-30 07:51:12
【问题描述】:

我正在尝试使用 Spring Boot 1.5.2.RELEASE + Camel (Spring Boot starter) 2.19.2 来侦听 ActiveMQ 队列,然后将消息作为其主体发布到休息端点 URL(POST 方法)。实现这一目标的最佳方法是什么? 我收集了一些信息,并试图将它们联系在一起,但有点困惑。

这是我为 Camel Rest DSL 收集的内容,我不太确定下面的骆驼是通过这个创建这些休息服务还是它只是一个已经公开的端点,在我的情况下它是一个已经公开的端点

rest("/basePath")
  post("/someEndpoint").to("direct:restEndpoint")

使用以上是我为 ActiveMQ 收集的内容,我不太确定是否正确

from("activemq:queue:<queue_name>").to("direct:restEndpoint")

但是,我不太确定如何收听 ActiveMQ 队列中的新消息,还是 Camel 默认总是这样做的?此外,我需要将消息作为帖子正文传递给我的休息端点。我还看到了一些对 camel-http4 和 camel-http 的引用,我完全糊涂了。

任何帮助将不胜感激。

【问题讨论】:

  • 既然你刚刚开始,我建议不要一次做很多事情,你正在做的事情。忘记 REST,只关注从队列中读取。让它发挥作用。一旦完成,移动到下一个和下一个。每个步骤本身都有许多参数和选项需要配置。熟悉这些,然后建立你的路线。您的大部分问题都在文档中说明,因此您需要阅读。
  • 查看内容丰富器 EIP 以从队列/骆驼端点进行按需轮询 - 您可以使用 pollEnrich 然后注意队列中是否没有消息,然后使用超时什么的。
  • 另外你把事情搞混了。 REST 服务在某些 HTTP 客户端调用时触发 - 而不是在新消息到达 JMS 队列时触发。
  • 我不确定你是否理解我想要实现的目标,我正在尝试轮询新消息并触发 HTTP 调用(休息服务),所以基本上我的骆驼路线将充当客户在这里。

标签: spring-boot apache-camel activemq camel-http


【解决方案1】:

在开始使用 Camel 时经常会出现一些混淆,但您的最终解决方案将类似于:

from("activemq:queue:my-route")
  .process(/* change the in/out messages if you need to */)
  .to("http4://your-endpoint.com");

不要试图简单地复制/粘贴此代码,直到它工作为止。我的 Camel 经验法则是:始终阅读组件文档并尝试在您的软件中使用它。在你的情况下,我建议:

  1. 读取ActiveMQ component docs 并尝试从ActiveMQ 读取/写入Log
  2. Timer 生成一些输入并使用HTTP4 Component 发送到您的Rest 端点;

您的第一条路线需要一些时间来处理简单的事情,但您会很快上手。

【讨论】:

  • 谢谢,这真的是一些很好的帮助。顺便说一句,我还不清楚一件事,如果我将路由配置为从队列中读取,它是否总是在寻找新消息?还是我需要单独配置?
  • 它总是寻找新消息。你可以配置你想要多少线程和其他东西,但是一旦一个消息到达并且有一个空闲线程就会被读取。
  • 感谢您的帮助。我现在被困在使用activeMQ配置的spring boot应用程序中,为此发布了一个单独的问题。正如你所说,从婴儿步骤开始:)
  • 这是我发布的问题。如果可能的话,你能帮忙吗? stackoverflow.com/questions/45831782/…
  • 我去看看。如果有帮助,请考虑接受此答案! Tks
猜你喜欢
  • 2011-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-09
  • 2015-05-05
  • 1970-01-01
  • 2018-09-05
  • 2013-01-21
相关资源
最近更新 更多