【问题标题】:Auditing dead letter queue messages use Apache camel or not审核死信队列消息是否使用 Apache camel
【发布时间】:2018-08-21 17:14:05
【问题描述】:

我一直在阅读 JMS、ActiveMQ 和 Camel。

据我了解,如果我们需要集成多个系统,其中集成只涉及相同格式的消息路由,activeMQ就足够了,否则我们可以选择camel。

现在如果由于某些异常或事务回滚导致消息重新传递到期,activeMQ会将失败的消息发送到死信队列。 我们没有使用 Apache camel,因为 activeMQ 足以满足我们的要求,但是如果我想监视和审核失败的消息,我应该选择 camel 还是会增加开销? 我以前没有使用过骆驼,所以如果有人可以指导我如何监控死信消息。我们正在考虑为每个主题或队列设置死信队列,并为客户提供审计日志。

【问题讨论】:

    标签: spring apache-camel jms activemq spring-jms


    【解决方案1】:

    视情况而定。你想用 DLQ 消息做什么?您预计会有多少错误?

    如果错误率非常低并且很难预测如何处理错误,则可能某些警报会触发人类查看 DLQ 上的 DLQ 消息以找出如何处理它。重试?提交错误报告?打电话给别人?

    要监控 DLQ,您可以使用 JMX 或它的 http 等价物 Jolokia 来监控队列并在队列大小大于零时发送警报。

    您当然可以使用 Apache Camel 以某种方式处理死消息。就像在电子邮件中发送它,将其保存到错误报告系统或采取其他措施来提醒用户,使用不同的逻辑来处理消息或其他什么。您可以在任何框架中编写此逻辑,而不仅仅是 Apache Camel。但骆驼是一个不错的选择。

    无论如何,DLQ 管理没有灵丹妙药。您必须构建一个(手动或自动)满足您的需求和限制的系统。

    【讨论】:

    • 我只需要从 DLQ 读取消息并维护一个错误表。将为该表提供一个 API。因此,根据理解,在这种情况下添加骆驼将是一种开销,对吗?我可以阅读 DLQ 并做这件事。您能否建议用于处理 DLQ 消息的最佳实践?
    • 当然,但是你需要“一些东西”来读取这个错误队列并发布到错误表,对吧?如果您没有运行其他已配置的内容,则该内容可以是 Camel。如果您需要从头开始编写一些东西,Camel 会减少连接、处理错误等的样板代码。 DLQ 消息的一件事——它们在 ActiveMQ 中有一个“重试”选项。因此,如果错误取决于离线数据库,您可能希望稍后触发“重试”(或者当技术人员决定这样做时)。 “重试”可以通过 JMX、HTTP/Jolokia 或 Web 控制台触发。
    • 所以我们的团队决定为 DLQ 设置一个监听器并审核错误消息。我们有 5 个节点处理各自的服务并通过 JSON 格式的 activemq 进行通信的微服务到位。我试图理解,我正在使用 spring jmstemplate 进行所有通信,camel 是否会简化所有服务器之间的通信,包括故障消息,或者它会是过度杀伤?我可能会问很多,但如果所有节点(JSON)之间的通信模式相同,我真的很困惑骆驼适合哪里
    猜你喜欢
    • 2019-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-28
    相关资源
    最近更新 更多