0

私は、次の2つの設定クラスました:LocalRabbitConfigAとLocalRabbitConfigBクラスが別のバーチャルホストに接続はconnectionFactoryを定義することを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); 
    } 
} 

注意を。
(Tomcat内で)アプリケーションを起動すると、すべてのExchangeがで作成され、両方とものVHostになります。

質問は、特定のExchange /キューが特定の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

、どうもありがとう! –

関連する問題