春ブート構成は、二つの異なるRabbitMQのを監視する方法
由于前段时间在公司开发过程中碰到了一个问题,需要同时监听两个不同的rabbitMq,但是之前没有同时监听两个RabbitMq的情况,因此在同事的帮助下,成功实现了监听多个MQ。下面我给大家一步一步讲解下,也为自己做个笔记;
- 1
- 2
詳細な手順:
1. application.properties設定ファイル:
u.rabbitmq.addresses=10.0.0.1:5672 u.rabbitmq.username=username1 u.rabbitmq.password=password1 u.rabbitmq.vhost.provider=/provider b.rabbitmq.addresses=10.0.0.2:5672 b.rabbitmq.username=username2 b.rabbitmq.password=password1 b.rabbitmq.vhost.provider=/provider
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
u.rabbitmq:最初のためのMQの構成は、後UMQの称さ
後BMQを呼ぶ、第二のためのMQの構成:b.rabbitmqを
2. RabbitMqConfigは、設定情報を読み込み、
@Value("${u.rabbitmq.username}")
private String uname;
@Value("${u.rabbitmq.password}") private String upassword; @Value("${u.rabbitmq.vhost.provider}") private String uhost; @Value("${u.rabbitmq.addresses}") private String uaddress; @Value("${b.rabbitmq.username}") private String bname; @Value("${b.rabbitmq.password}") private String bpassword; @Value("${b.rabbitmq.vhost.provider}") private String bhost; @Value("${b.rabbitmq.addresses}") private String baddress;
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
リンクを設定3.RabbitMqConfig
@Bean(name="uConnectFactory")
@Primary
public ConnectionFactory uConnectFactory() { CachingConnectionFactory connectionFactory = new CachingConnectionFactory(); connectionFactory.setAddresses(uaddress); connectionFactory.setUsername(uname); connectionFactory.setPassword(upassword); connectionFactory.setVirtualHost(uhost); return connectionFactory; } @Bean(name="bConnectFactory") public ConnectionFactory bConnectFactory() { CachingConnectionFactory connectionFactory = new CachingConnectionFactory(); connectionFactory.setAddresses(rpbaddress); connectionFactory.setUsername(rpbusername); connectionFactory.setPassword(rpbpassword); connectionFactory.setVirtualHost(rpbvhost); return connectionFactory; }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
リンクを指定せずに参照し、リンクはデフォルトで選択され、それは複数のリンクが設定されている@Primaryラベルが@Primaryラベルを追加しなければならない、または彼らがRabbitMQのに対応した接続を見つけない場合があります。
4.モニタコネクタの設定
@Bean(name="uRabbitListenerContainerFactory")
public SimpleRabbitListenerContainerFactory uRabbitListenerContainerFactory(
@Qualifier("uConnectFactory") ConnectionFactory connectionFactory,
RabbitProperties config
) {
SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
factory.setConnectionFactory(connectionFactory); RabbitProperties.Listener listenerConfig = config.getListener(); factory.setAutoStartup(listenerConfig.isAutoStartup()); if (listenerConfig.getAcknowledgeMode() != null) { factory.setAcknowledgeMode(listenerConfig.getAcknowledgeMode()); } if (listenerConfig.getConcurrency() != null) { factory.setConcurrentConsumers(listenerConfig.getConcurrency()); } if (listenerConfig.getMaxConcurrency() != null) { factory.setMaxConcurrentConsumers(listenerConfig.getMaxConcurrency()); } if (listenerConfig.getPrefetch() != null) { factory.setPrefetchCount(listenerConfig.getPrefetch()); } if (listenerConfig.getTransactionSize() != null) { factory.setTxSize(listenerConfig.getTransactionSize()); } return factory; } @Bean(name="bRabbitListenerContainerFactory") public SimpleRabbitListenerContainerFactory brabbitListenerContainerFactory( @Qualifier("bConnectionFactory") ConnectionFactory connectionFactory, RabbitProperties config ) { SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory(); factory.setConnectionFactory(connectionFactory); RabbitProperties.Listener listenerConfig = config.getListener(); factory.setAutoStartup(listenerConfig.isAutoStartup()); if (listenerConfig.getAcknowledgeMode() != null) { factory.setAcknowledgeMode(listenerConfig.getAcknowledgeMode()); } if (listenerConfig.getConcurrency() != null) { factory.setConcurrentConsumers(listenerConfig.getConcurrency()); } if (listenerConfig.getMaxConcurrency() != null) { factory.setMaxConcurrentConsumers(listenerConfig.getMaxConcurrency()); } if (listenerConfig.getPrefetch() != null) { factory.setPrefetchCount(listenerConfig.getPrefetch()); } if (listenerConfig.getTransactionSize() != null) { factory.setTxSize(listenerConfig.getTransactionSize()); } return factory; }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
5.設定メッセージのプロキシ
@Bean(name="uAmqpAdmin")
public AmqpAdmin amqpAdmin(@Qualifier("uConnectFactory") ConnectionFactory connectionFactory) { RabbitAdmin admin = new RabbitAdmin(connectionFactory); admin.setAutoStartup(false); return admin; } @Bean(name="bAmqpAdmin") public AmqpAdmin rpdAmqpAdmin(@Qualifier("bConnectionFactory") ConnectionFactory connectionFactory) { RabbitAdmin admin = new RabbitAdmin(connectionFactory); admin.setAutoStartup(false); return admin; }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
6.詳細なモニター・キューと使用形態
UMQキューキュー・モニターの設定
@RabbitListener(queues = "queue", containerFactory = uRabbitListenerContainerFactory")
public void handleMessage(String message) throws Exception {
具体操作。。。。
}
- 1
- 2
- 3
- 4
RMQキューキュー・モニターの設定
@RabbitListener(queues = "queue", containerFactory = rRabbitListenerContainerFactory")
public void handleMessage(String message) throws Exception {
具体操作。。。。
}
ます。https://www.cnblogs.com/dauber/p/8028977.htmlで再現