时间:2024-9-1 作者:老大夫 分类: RabbitMQ
创建之后,可以在列表中看到:
创建之后,可以在列表中看到:
public static final String EXCHANGE_TRANSIENT = "exchange.transient.user";
public static final String ROUTING_KEY_TRANSIENT = "user";
@Test
public void testSendMessageTransient() {
rabbitTemplate.convertAndSend(
EXCHANGE_TRANSIENT,
ROUTING_KEY_TRANSIENT,
"Hello atguigu user~~~");
}
结论:临时性的交换机和队列也能够接收消息,但如果RabbitMQ服务器重启之后会怎么样呢?
docker restart rabbitmq
重启之后,刚才临时性的交换机和队列都没了。在交换机和队列这二者中,队列是消息存储的容器,队列没了,消息就也跟着没了。
我们其实不必专门创建持久化的交换机和队列,因为它们默认就是持久化的。接下来我们只需要确认一下:存放到队列中,尚未被消费端取走的消息,是否会随着RabbitMQ服务器重启而丢失?
运行以前的发送消息方法即可,不过要关掉消费端程序
docker restart rabbitmq
仍然还在:
在后台管理界面创建交换机和队列时,默认就是持久化的模式。
此时消息也是持久化的,不需要额外设置。
推荐阅读:
RabbitMQ交换机类型
Operation007-SpringBoot
Operation019-Federation
Operation006-Topics
Operation018-Stream
Operation004-PubSub
Operation001-Install
Operation008-Confirm01-A-Producer生产者端消息确认机制
Operation020-Shovel
Operation005-Routing
行动消除疑虑