Spring 启动@JmsListener 拦截器

Spring Boot @JmsListener Interceptor

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

That works but then I cannot access message attributes. Is there any message context somewhere in jms components which I can override or access to get message attibutes for logging?

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