Личная визитка:
Блогер: Пьяница.
Личный профиль: Наслаждайтесь вином и используйте энергию вина для борьбы за будущее.
Эта статья вдохновляет: Когда мы втроем путешествуем вместе, мы должны быть моим учителем.
Этот проект основан на Java «SpringCloud Microservice Technology Stack» от темного программиста станции B , SpringCloud+RabbitMQ+Docker+Redis+search+distributed.
[SpringCloud+RabbitMQ+Docker+Redis+search+distributed, подробное описание системы, курс по стеку технологий микросервисов Springcloud | Темная лошадка программиста Java-микросервисы] Нажмите, чтобы посмотреть
Оглавление
2. Надежность сообщений
2. Сохранение сообщений
Подтверждение производителя может гарантировать, что сообщение будет доставлено в очередь RabbitMQ, но после отправки сообщения в RabbitMQ, если машина внезапно выйдет из строя, сообщение также может быть потеряно.
Чтобы гарантировать безопасное сохранение сообщений в RabbitMQ, необходимо включить механизм сохранения сообщений.
- Постоянство переключения: непостоянное по умолчанию
- Сохраняемость очереди: непостоянная по умолчанию.
- Сохранение сообщений: сохранение по умолчанию.
По умолчанию все, что использует mq через SpringAMQP, является постоянным.
- Переключить постоянство
Переключатель в RabbitMQ по умолчанию непостоянен и будет потерян после перезапуска mq.
В SpringAMQP постоянство переключения можно указать с помощью кода:
@Bean
public DirectExchange simpleExchange(){
// 三个参数:交换机名称、是否持久化、当没有queue与其绑定时是否自动删除
return new DirectExchange("simple.direct", true, false);
}
Вы можете увидеть метки постоянных переключателей в консоли RabbitMQ
D
:
- Постоянство очереди
Очереди в RabbitMQ по умолчанию непостоянны и будут потеряны после перезапуска mq.
В SpringAMQP постоянство переключения можно указать с помощью кода:
@Bean
public Queue simpleQueue(){
// 使用QueueBuilder构建队列,durable就是持久化的
return QueueBuilder.durable("simple.queue").build();
}
Вы можете увидеть метки постоянных очередей в консоли RabbitMQ
D
:
- Сохранение сообщений
При отправке сообщения с помощью SpringAMQP вы можете установить свойства сообщения (MessageProperties) и указать режим доставки:
- 1: непостоянный
- 2: Устойчивое развитие
Непостоянные сообщения исчезнут после перезапуска mq.
Код сообщения о сохранении
/**
* 持久化消息测试
*/
@Test
public void testDurableMessage() {
//创建持久化消息
Message message = MessageBuilder
.withBody("hello, ttl queue".getBytes(StandardCharsets.UTF_8))
.setDeliveryMode(MessageDeliveryMode.PERSISTENT)
.build();
//消息id
CorrelationData correlationData = new CorrelationData(UUID.randomUUID().toString());
//发送消息
rabbitTemplate.convertAndSend("simple.queue", message, correlationData);
//记录日志
log.debug("消息发送成功");
}
Перезапустите докер, сообщение все еще существует.
Уведомление:
- Routekey может использовать имя очереди, если очередь не привязана к коммутатору.
В приведенном выше примере кода simple.queue — это очередь, но она не привязана к переключателю.