我有ActiveMQ和HTTP rest服务。我需要从队列中读取消息并将其发送到http服务。如果http代码为200 -请从队列中删除该消息。这可以通过自定义服务/守护进程完成。我有一个想法,用Apache Camel解决它。这可能吗?我找到了基本路由的样本。但我需要在http服务成功处理后才能删除该消息。
waxmsbnn1#
是的,这对Camel来说是可能的。如果你只需要转发消息,Camel的路线非常简单。您可以使用JMS-或ActiveMQ-Consumer来使用消息,也可以使用基本的HTTP producer或更具体的REST producer来将消息发送到HTTP端点。如果您将使用者配置为使用Broker事务,则错误部分几乎免费完成。使用Broker事务,Camel会在处理路由没有错误时自动提交消息。这意味着,它们在Broker上被删除。如果路由有错误(例如,发送时出现HTTP错误),则不会提交消息,因此(立即)由Broker重新传递并由应用程序重新处理。正如注解中所描述的,您可以使用errorHandler(基本上也是Camel路由)来告诉Camel在错误情况下应该做什么。通常,您必须管理失败计数,并将x个错误后的消息移动到错误队列中以供进一步分析。否则,您的处理将被阻塞(并且忙碌),因为您将无限期地重新处理一个总是失败的消息。
errorHandler
1条答案
按热度按时间waxmsbnn1#
是的,这对Camel来说是可能的。
如果你只需要转发消息,Camel的路线非常简单。
您可以使用JMS-或ActiveMQ-Consumer来使用消息,也可以使用基本的HTTP producer或更具体的REST producer来将消息发送到HTTP端点。
如果您将使用者配置为使用Broker事务,则错误部分几乎免费完成。使用Broker事务,Camel会在处理路由没有错误时自动提交消息。这意味着,它们在Broker上被删除。
如果路由有错误(例如,发送时出现HTTP错误),则不会提交消息,因此(立即)由Broker重新传递并由应用程序重新处理。
正如注解中所描述的,您可以使用
errorHandler
(基本上也是Camel路由)来告诉Camel在错误情况下应该做什么。通常,您必须管理失败计数,并将x个错误后的消息移动到错误队列中以供进一步分析。否则,您的处理将被阻塞(并且忙碌),因为您将无限期地重新处理一个总是失败的消息。