如何设置@JmsListener发送的消息的生存时间(TTL)

时间:2015-10-07 05:28:54

标签: spring-jms

我在我的应用程序中使用spring-jms 4.1.6中的@JmsListener,我想在发送到JMSReplyTo字段的响应上设置一个TTL。我很难轻易地尝试这样做。我对spring-jms更新,所以我认为我可能会忽略一些东西。

要设置TTL,我必须

  • 创建一个CustomJmsListenerAnnotationBeanProcessor,
  • 为每个带注释的方法
  • 创建CustomMethodJmsListenerEndpoint
  • 覆盖createMessageListenerInstance
  • 创建CustomMessagingMessageListenerAdapter
  • 覆盖postProcessProducer,如下所示:

    protected void postProcessProducer(MessageProducer, Message response) throws JMSException {
       super.postProcessProducer(producer, response);
       producer.setTimeToLive(10000);
    }
    

确定。所以这一切似乎都是精神错乱,特别是因为postProcessProducer很好地搞定,并且因为MessagingMessageListenerAdapter有一个工厂方法。似乎这个方法被拦截了一个被覆盖的。这让我想到了我的问题:

  • 似乎在响应上设置TTL是一项常见的事情,所以无数的重写似乎是错误的。我是否忽略了在响应中设置TTL的简单方法?
  • 我是否忽略了一种更简单的注入MessagingMessageListenerAdapter子节点的方法,因为它似乎被覆盖了?

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

你接近是正确的。他们也实施了支持: https://jira.spring.io/browse/SPR-13774

所以现在你可以扩展CustomJmsListenerAnnotationBeanProcessor而无需应对整个班级。