Проблема: у меня есть приложение, в котором определен простой компонент SimpleRabbitListenerContainerFactory. Создан компонент, который имеет обобщенную c реализацию для RabbitListenerAroundAdvice, которая предназначена для применения к любому приложению, которое имеет компонент SimpleRabbitListenerContainerFactory и добавляется как зависимость. Один из способов установить цепочку рекомендаций - это приложение, которое означает, что каждое приложение, полагающееся на этот совет, должно вносить изменения go. Я хочу установить цепочку рекомендаций SimpleRabbitListenerContainerFactory в компоненте RabbitListenerAroundAdvice, для которого мне нужен компонент SimpleRabbitListenerContainerFactory, определенный в приложении. Как получить этот bean-компонент для установки advicechain?
Пример: Bean-компонент как в приложении
@Bean
SimpleRabbitListenerContainerFactory simpleRabbitListenerContainerFactory(ConnectionFactory connectionFactory, @Value("${queue.consumers}") int concurrentConsumer) {
SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
factory.setConnectionFactory(connectionFactory);
factory.setConcurrentConsumers(concurrentConsumer);
factory.setMaxConcurrentConsumers(concurrentConsumer);
factory.setPrefetchCount(1);
return factory;
}
RabbitListenerAroundAdvice, как показано ниже:
//set the advice of the SimpleRabbitListenerContainerFactory so that the message is intercepted.
public class RabbitListenerAroundAdvice implements MethodInterceptor {
@Override
public Object invoke(MethodInvocation methodInvocation) throws Throwable {
//business logic to to check before handling the message
final Object result = methodInvocation.proceed();
return result;
}
}