Как автоматически подключить или получить bean-компонент, который активен в запущенном приложении и требуется для одного из зависимых jar-файлов - PullRequest
0 голосов
/ 03 апреля 2020

Проблема: у меня есть приложение, в котором определен простой компонент 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;
    }

}
...