【问题标题】:Apache Camel route from ActiveMQ to HTTP service从 ActiveMQ 到 HTTP 服务的 Apache Camel 路由
【发布时间】:2021-12-09 02:04:31
【问题描述】:

我有 ActiveMQ 和 HTTP 休息服务。 我需要从队列中读取一条消息并将其发送到 http 服务。如果 http 代码 200 - 从队列中删除消息。它可以通过自定义服务/守护进程来完成。

我有个想法用 Apache Camel 来解决这个问题。这可能吗? 我找到了基本路由的示例。但是我需要在http服务成功处理后删除消息。

【问题讨论】:

  • 您是否有特定的原因要使用 Camel?为什么不写一个简单的 JMS 客户端应用程序来完成这项工作?
  • 是的。我们已经安装了实例。而且我有一个避免支持另一个守护进程的想法。
  • 尝试使用 Camel 错误处理并管理错误,您将看到代理重新传递错误消息。 errorHandler(noErrorHandler());

标签: apache-camel activemq


【解决方案1】:

是的,Camel 可以做到这一点。

如果只需要转发消息,骆驼路由很简单。

您可以使用JMS-ActiveMQ-Consumer 来使用消息,并使用基本的HTTP producer 或更具体的REST producer 将它们发送到HTTP 端点。

如果您将消费者配置为使用代理交易,错误部分几乎是免费完成的。使用代理事务,Camel 会在处理路径没有错误时自动提交消息。这意味着,它们会在代理上被删除

如果路由有错误(例如发送时出现 HTTP 错误),则消息不会提交,因此(立即)由代理重新传递并由您的应用程序重新处理。

正如 cmets 中粗略描述的那样,您可以使用 errorHandler(基本上也是 Camel 路由)来告诉 Camel 在错误情况下要做什么。通常,您必须管理故障计数并将 x 个错误后的消息移动到错误队列以进行进一步分析。否则,您的处理将被无限期地重新处理一条消息而被阻止(并且忙碌),而该消息一直都失败了。

【讨论】:

    猜你喜欢
    • 2014-05-23
    • 1970-01-01
    • 2011-08-04
    • 1970-01-01
    • 2020-01-25
    • 1970-01-01
    • 1970-01-01
    • 2019-05-27
    • 2016-09-29
    相关资源
    最近更新 更多