Сохранение расширенных сообщений MQ

Пожалуйста, добавьте описание изображения
Личная визитка:

Блогер: Пьяница.
Личный профиль: Наслаждайтесь вином и используйте энергию вина для борьбы за будущее.
Эта статья вдохновляет: Когда мы втроем путешествуем вместе, мы должны быть моим учителем.

Пожалуйста, добавьте описание изображения
Этот проект основан на 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, является постоянным.

  1. Переключить постоянство

Переключатель в RabbitMQ по умолчанию непостоянен и будет потерян после перезапуска mq.

В SpringAMQP постоянство переключения можно указать с помощью кода:

@Bean
public DirectExchange simpleExchange(){
    
    
    // 三个参数:交换机名称、是否持久化、当没有queue与其绑定时是否自动删除
    return new DirectExchange("simple.direct", true, false);
}

Вы можете увидеть метки постоянных переключателей в консоли RabbitMQ D:
Вставьте сюда описание изображения

  1. Постоянство очереди

Очереди в RabbitMQ по умолчанию непостоянны и будут потеряны после перезапуска mq.

В SpringAMQP постоянство переключения можно указать с помощью кода:

@Bean
public Queue simpleQueue(){
    
    
    // 使用QueueBuilder构建队列,durable就是持久化的
    return QueueBuilder.durable("simple.queue").build();
}

Вы можете увидеть метки постоянных очередей в консоли RabbitMQ D:
Вставьте сюда описание изображения

  1. Сохранение сообщений

При отправке сообщения с помощью 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 — это очередь, но она не привязана к переключателю.

Supongo que te gusta

Origin blog.csdn.net/m0_65144570/article/details/133150288
Recomendado
Clasificación