0

я следующие два конфигурации классы:Как использовать несколько vhosts в проекте Spring RabbitMQ?

@Configuration 
@EnableRabbit 
@Import({ LocalRabbitConfigA.class, CloudRabbitConfigA.class }) 
public class RabbitConfigA { 
    @Autowired 
    @Qualifier("rabbitConnectionFactory_A") 
    private ConnectionFactory rabbitConnectionFactory; 

    @Bean(name = "admin_A") 
    AmqpAdmin amqpAdmin() { 
     return new RabbitAdmin(rabbitConnectionFactory); 
    } 

    @Bean(name = "Exchange_A") 
    DirectExchange receiverExchange() { 
     return new DirectExchange("Exchange_A", true, false); 
    } 
} 

И

@Configuration 
@EnableRabbit 
@Import({ LocalRabbitConfigB.class, CloudRabbitConfigB.class }) 
public class RabbitConfigB { 
    @Autowired 
    @Qualifier("rabbitConnectionFactory_B") 
    private ConnectionFactory rabbitConnectionFactory; 

    @Bean(name = "admin_B") 
    AmqpAdmin amqpAdmin() { 
     return new RabbitAdmin(rabbitConnectionFactory); 
    } 

    @Bean(name = "Exchange_B") 
    DirectExchange receiverExchange() { 
     return new DirectExchange("Exchange_B", true, false); 
    } 
} 

Обратите внимание, что классы LocalRabbitConfigA и LocalRabbitConfigB определяют ConnectionFactory, который подключается к другому ВХосту.
При запуске приложения (в пределах Tomcat) все биржи создаются в как VHosts.

Вопрос в том, как определить, что определенный Exchange/Queue создается определенным ConnectionFactiory?

Так что VHost A содержит только Exchange_A и VHost B только Exchange_B?

ответ

1

См. conditional declaration.

В частности:

@Bean(name = "Exchange_B") 
DirectExchange receiverExchange() { 
    DirectExchange exchange = new DirectExchange("Exchange_B", true, false); 
    exchange.setAdminsThatShouldDeclare(amqpAdmin()); 
    return exchange; 
} 
+0

Я только что нашел это тоже, но не посмел ответить на мой вопрос так быстро ... Но в любом случае, спасибо много! –

Смежные вопросы