//声明RabbitAdmin用户创建交换机,队列及绑定关系
RabbitAdmin rabbitAdmin = new RabbitAdmin(rabbitTemplate);
//创建交换机,并用rabbitAdmin进行声明
DirectExchange directExchange = new DirectExchange("author-subscribe");
rabbitAdmin.declareExchange(directExchange);
//创建队列,设置消息的持久化存储为true
Queue queue = new Queue("author-subscribe-" + userId, true);
//创建此队列与交换机的绑定关系,路由键为文章作者的id
Binding bind = BindingBuilder.bind(queue).to(directExchange).with(authorId);
if(队列与交换机此绑定关系已存在){
//取消队列与交换机之间此作者id的路由键绑定
rabbitAdmin.removeBinding(bind);
}else{
//声明队列的使用
rabbitAdmin.declareQueue(queue);
//增加队列与交换机之间此作者id的路由键绑定
rabbitAdmin.declareBinding(bind);
}
1.此交换机名不存在,则declareExchange会创建并使用该交换机,若该交换机已存在,直接使用该交换机,队列或绑定关系同理
2.创建交换机,队列以及绑定关系都需要RabbitAdmin进行declare才会正确的存储到rabbitmq中