spring-amqp无法在SimpleMessageListenerContainerFactory

时间:2018-07-19 14:16:01

标签: spring-amqp

在spring-amqp 2.0.3.RELEASE模块中,无法在SimpleMessageListenerContainerFactory中使用自定义MessagingMessageListenerAdapter。

即使是注册自己的bean,我们也停留在最高的位置,在org.springframework.amqp.rabbit.annotation.RabbitListenerAnnotationBeanPostProcessor#processAmqpListener处,刚创建的最后一个对象实例“新的MethodRabbitListenerEndpoint”。

也许春季开发人员可以向SimpleMessageListenerContainerFactory添加一些生产者注册,例如“ smlcf.setMessageListenerAdapterCreator”

2 个答案:

答案 0 :(得分:0)

我认为您的要求可以通过RabbitListenerAnnotationBeanPostProcessor扩展名完成:

@Bean(name = RabbitListenerConfigUtils.RABBIT_LISTENER_ANNOTATION_PROCESSOR_BEAN_NAME)
@Role(BeanDefinition.ROLE_INFRASTRUCTURE)
static RabbitListenerAnnotationBeanPostProcessor myRabbitListenerAnnotationBeanPostProcessor() {

    return new RabbitListenerAnnotationBeanPostProcessor() {

         @Override
         protected void processListener(MethodRabbitListenerEndpoint endpoint, RabbitListener rabbitListener, Object bean,
            Object adminTarget, String beanName) {

                  super.processListener(new MyMethodRabbitListenerEndpoint(), rabbitListener, proxy, adminTarget, beanName);
         }
    };
}

但是您所说的重试回复确实很有意义,我们绝对应该考虑让RabbitTemplate注入RabbitListenerContainerFactory

随时提出此事的JIRA。

答案 1 :(得分:0)

我创建了一个故事,用于为ReplyTo https://jira.spring.io/browse/AMQP-825

添加重试功能