因为业务规模比较大,采用多台rabbitmq服务器进行处理,在每台rabbitmq建立相同的exchange,采用客户端分片的方式,生产者根据hash分发消息到不同的服务器中。
作为消费者,必须能支持消费全部rabbitmq的相同的exchange。
这里因为4台mq,就在代码中写死数组下标
package cn.jpush.sms.common;
import org.springframework.amqp.core.AcknowledgeMode;
import org.springframework.amqp.rabbit.annotation.EnableRabbit;
import org.springframework.amqp.rabbit.config.SimpleRabbitListenerContainerFactory;
import org.springframework.amqp.rabbit.connection.CachingConnectionFactory;
import org.springframework.amqp.rabbit.connection.ConnectionFactory;
import org.springframework.amqp.rabbit.core.RabbitAdmin;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.List;
@Configuration
@EnableRabbit
public class RabbitMQConfig {
@Autowired
private RabbitProperties rabbitProperties;
@Bean
public ConnectionFactory connectionFactory() {
return buildConnectionFactory(0);
}
@Bean
public ConnectionFactory connectionFactory1() {
return buildConnectionFactory(1);
}
@Bean
public ConnectionFactory connectionFactory2() {
return buildConnectionFactory(2);
}
@Bean
public ConnectionFactory connectionFactory3() {
return buildConnectionFactory(3);
}