springboot rabbitMq队列初始化方法有多种方式这里列出4种
1.使用注解@Bean与类Queue 单一队列初始化 如下
/**
* 若队列不存在创建队列 第二个参数为是否持久化
*
* @return
*/
@Bean
public Queue Queue1() {
return new Queue(队列名, false);
}
2.使用 Channel 对象 queueDeclare方法初始化如下
@Resource(name = "rabbitConnectionFactory")
private ConnectionFactory connectionFactory;
@PostConstruct
public void postConstruct() {
System.out.println("队列初始化"+commonConfig.getFouOrdeNotice());
Connection connection = connectionFactory.createConnection();
for (int i = 0; i < 10; i++) {
Channel channel = connection.createChannel(false);
try {
channel.queueDeclare("test213456" + i, false, false, false, null);
} catch (AmqpException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
channel.close();
} catch (IOException e) {
e.printStackTrace();
} catch (TimeoutException e) {
e.printStackTrace();
}
}
}
connection.close();
}
3.springboot2.0之后在RabbitListener注解中直接使用 queuesToDeclare 属性初始化 如下
//2. 自动创建队列
@RabbitListener(queuesToDeclare = @Queue(value="队列名",durable=是否持久化))
public void process2(String message){
}
4.springboot1.5之后在RabbitListener注解中直接使用 bindings 属性初始化与交换机绑定 如下(若绑定队列为默认队列,此方法创建队列可能会出现,没有权限修改默认交换机的异常,但不影响队列的创建与监听)
@RabbitListener(bindings = @QueueBinding(
value = @Queue(value="队列名",durable="是否持久化"),
exchange = @Exchange(value = "") //需要绑定的交换机 空字符串与默认交换绑定
))
可根据具体情况选择使用