✅P257_商城业务-消息队列-AmqpAdmin使用
大约 1 分钟
使用AmqpAdmin创建交换机
交换机的类型如下图所示(选中Exchange,Ctrl+H)
cfmall-order/src/test/java/com/gyz/cfmall/order/CfmallOrderApplicationTests.java
@Slf4j
@RunWith(SpringRunner.class)
@SpringBootTest
public class CfmallOrderApplicationTests {
@Autowired
AmqpAdmin amqpAdmin;
@Test
void createExchange() {
//name:交换机名称 durable:是否持久化 autoDelete:是否自动删除(没人用时是否自动删除)
DirectExchange directExchange = new DirectExchange("direct-exchange", true, false);
amqpAdmin.declareExchange(directExchange);
log.info("direct-exchange创建成功");
}
}
创建队列
/**
* String name,
* boolean durable,
* boolean exclusive :如果我们正在声明独占队列,则为true。该队列仅由申报者的连接使用。
* 设置为true,其他连接连不了此队列,在实际开发中连接可以连所有队列。
* boolean autoDelete
* Map<String, Object> arguments
*/
@Test
void createQueue() {
Queue queue = new Queue("hello-queue", true, false, false);
amqpAdmin.declareQueue(queue);
log.info("hello-queue创建成功");
}
绑定
/**
* String destination:目的地,绑定交换机名称或者队列的名称
* Binding.DestinationType destinationType:目的地类型,队列或交换机
* String exchange:交换机名称
* String routingKey:路由键
* Map<String, Object> arguments:自定义参数
*/
@Test
void createBinding() {
Binding binding = new Binding("hello-queue",
Binding.DestinationType.QUEUE,
"direct-exchange",
"helloQueue", null);
amqpAdmin.declareBinding(binding);
log.info("交换器direct-exchange和队列hello-queue绑定成功");
}