在 Spring JMS 中禁用自动回复
Disable automatic reply in Spring JMS
根据 Spring 参考文献 documentation,用 @JmsListener
注释并具有非 void
return 类型的方法将具有调用结果封装在 javax.jms.Message
中并发送到原始消息的 JMSReplyTo
header 中指定的目的地或在侦听器上配置的默认目的地。
如果未找到目的地,则会抛出 InvalidDestinationException
。
有没有办法禁用这种自动回复行为?
编辑
我正在使用 @Around
Advice 来记录执行结果,这就是为什么我需要在我的侦听器上使用 return 类型。
如果方法具有 return 类型,则从该方法返回 null
将禁用回复处理。
您可以通过向方法添加 @Header
参数来检测是否存在 replyTo。
或者,如果没有header,则添加一个带有目的地的@SendTo
。
编辑
由于您正在使用建议来记录 return 值,因此您可以简单地从建议中 return null
,而不是 invocation.proceed()
的结果。
根据 Spring 参考文献 documentation,用 @JmsListener
注释并具有非 void
return 类型的方法将具有调用结果封装在 javax.jms.Message
中并发送到原始消息的 JMSReplyTo
header 中指定的目的地或在侦听器上配置的默认目的地。
如果未找到目的地,则会抛出 InvalidDestinationException
。
有没有办法禁用这种自动回复行为?
编辑
我正在使用 @Around
Advice 来记录执行结果,这就是为什么我需要在我的侦听器上使用 return 类型。
如果方法具有 return 类型,则从该方法返回 null
将禁用回复处理。
您可以通过向方法添加 @Header
参数来检测是否存在 replyTo。
或者,如果没有header,则添加一个带有目的地的@SendTo
。
编辑
由于您正在使用建议来记录 return 值,因此您可以简单地从建议中 return null
,而不是 invocation.proceed()
的结果。