在spring-amqp 2.0.3.RELEASE模块中,无法在SimpleMessageListenerContainerFactory中使用自定义MessagingMessageListenerAdapter。
即使是注册自己的bean,我们也停留在最高的位置,在org.springframework.amqp.rabbit.annotation.RabbitListenerAnnotationBeanPostProcessor#processAmqpListener处,刚创建的最后一个对象实例“新的MethodRabbitListenerEndpoint”。
也许春季开发人员可以向SimpleMessageListenerContainerFactory添加一些生产者注册,例如“ smlcf.setMessageListenerAdapterCreator”
答案 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
添加重试功能