【问题标题】:Spring Boot @JmsListener InterceptorSpring Boot @JmsListener 拦截器
【发布时间】:2020-01-22 16:13:27
【问题描述】:

在我的应用程序中,我有消息从一个队列移动到另一个队列,我想在我的日志中添加消息 ID。我试图弄清楚是否可以在实际处理之前拦截消息并在 MDC 字段中设置消息 ID,以便我可以在所有队列中跟踪此消息。到目前为止我还没有成功。有没有现成的解决方案?

【问题讨论】:

  • 请参阅this answer 关于@KafkaListener 的类似问题;您可以在这里使用相同的技术。
  • 这有效@GaryRussell,但我无法访问消息属性。 jms 组件中是否有任何消息上下文可以覆盖或访问以获取用于日志记录的消息属性?

标签: java spring-boot jms spring-jms


【解决方案1】:

这可行,但我无法访问消息属性。 jms 组件中的某处是否有任何消息上下文,我可以覆盖或访问以获取用于日志记录的消息属性?

您可以将原始 JMS Message(或只是消息 id 属性)作为附加参数添加到 @JmsListener(并使用 invocation.getArguments() 访问它),或者您可以包装整个侦听器适配器而不仅仅是你的监听器bean。使用容器注册表获取对容器的引用,然后使用container.setMessageListener(wrap(container.getMessageListener()));。

【讨论】:

    猜你喜欢
    • 2018-08-09
    • 1970-01-01
    • 1970-01-01
    • 2020-01-21
    • 2017-11-28
    • 1970-01-01
    • 2021-03-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多