MQ Advanced — переключатель мертвых букв

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

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

Пожалуйста, добавьте описание изображения
Этот проект основан на Java «SpringCloud Microservice Technology Stack» от темного программиста станции B , SpringCloud+RabbitMQ+Docker+Redis+search+distributed.

[SpringCloud+RabbitMQ+Docker+Redis+search+distributed, подробное описание системы, курс по стеку технологий микросервисов Springcloud | Темная лошадка программиста Java-микросервисы] Нажмите, чтобы посмотреть

3. Переключатель мертвой буквы

1. Первое знакомство с переключателями мертвой буквы

  1. Что такое переключатель мертвой буквы

Коммутатор мертвой буквы — это сетевое устройство, которое пересылает пакеты по сети, но не отправляет пакеты с одного порта на другой, как обычный коммутатор. Вместо этого коммутатор недоставленных сообщений отправляет пакеты на заданный адрес электронной почты, который обычно представляет собой почтовый ящик недоставленных сообщений. Когда пакет поступает в почтовый ящик недоставленных писем, получатель получает уведомление по электронной почте о том, что новый пакет доступен для загрузки.

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

В области сетевой безопасности переключатели недоставленных сообщений часто используются для безопасной передачи конфиденциальной информации, такой как конфиденциальные документы внутри компании или конфиденциальная информация государственного учреждения. Кроме того, переключатели недоставленных сообщений можно использовать для предотвращения атак типа «отказ в обслуживании» (DoS) и распределенных атак типа «отказ в обслуживании» (DDoS). В ходе этих атак злоумышленники наводняют целевой сервер нежелательным трафиком, вызывая его сбой или перегрузку. Использование переключателя недоставленных сообщений предотвращает это, поскольку злоумышленник не может напрямую атаковать целевой сервер, а может атаковать только адрес электронной почты на переключателе недоставленных сообщений.

Подводя итог, можно сказать, что коммутатор мертвой буквы — это очень полезное сетевое устройство, которое обеспечивает безопасность и надежность пакетов данных и предотвращает атаки типа «отказ в обслуживании».

Когда сообщение в очереди соответствует одному из следующих условий, оно может стать недоставленным:

  • Потребитель использует Basic.reject или Basic.nack, чтобы объявить, что потребление не удалось, а для параметра requeue сообщения установлено значение false.
  • Это сообщение с истекшим сроком действия, и никто не будет использовать его по истечении времени ожидания.
  • Сообщение очереди, которое необходимо доставить, заполнено и не может быть доставлено.

Если очередь, содержащая недоставленные письма, настроена с dead-letter-exchangeатрибутами и указан переключатель, то недоставленные письма в очереди будут доставлены на этот переключатель, и этот переключатель называется обменом недоставленных писем (проверьте DLX).

Как показано на рисунке, сообщение было отклонено потребителем и стало недоставленным письмом. Поскольку очередь, в которой находится это сообщение, привязана к переключателю недоставленных писем, недоставленное письмо будет доставлено на этот коммутатор. Если этот переключатель недоставленных писем также привязано к очереди, сообщение в конечном итоге попадет в очередь, в которой хранятся недоставленные письма:
Вставьте сюда описание изображения

Когда очередь доставляет недоставленное письмо коммутатору недоставленных писем, она должна знать две части информации:

  • Имя переключателя мертвой буквы
  • RoutingKey привязан к переключателю недоставленных писем и очереди недоставленных писем.

Это гарантирует, что доставленное сообщение сможет достичь коммутатора недоставленных сообщений и будет правильно перенаправлено в очередь недоставленных сообщений.

  1. Использование переключателя недоставленных писем для получения недоставленных писем (расширение)

В стратегии повторной попытки сбоя RejectAndDontRequeueRecoverer по умолчанию отправит отказ в RabbitMQ после того, как количество локальных повторов будет исчерпано, и сообщение станет мертвым письмом и будет отброшено.

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

//建立死信交换机
@RabbitListener(bindings = @QueueBinding(
        value = @Queue(name = "dl.queue", durable = "true"),
        exchange = @Exchange(name = "dl.direct", durable = "true", autoDelete = "false"),
        key = "dl"
))
public void listenDlQueue(String msg) {
    
    
    log.info("接收到dl.queue死信消息:{}", msg);
}
//绑定死信交换机    
@Bean
public Queue queue() {
    
    
    return QueueBuilder
            .durable("simple.queue")
            .deadLetterExchange("dl.direct")
            .build();
}

Подведем итог

Какие новости становятся мертвым письмом?

  • Сообщение отклонено потребителем или возвращает NACK.
  • Время ожидания сообщения истекло и оно не было использовано
  • Очередь заполнена

Каковы сценарии использования переключателей с мертвой буквой?

  • Если очередь привязана к коммутатору недоставленных писем, недоставленное письмо будет доставлено в коммутатор недоставленных писем;
  • Вы можете использовать обмен недоставленными письмами для сбора всех сообщений, которые потребители не смогли обработать (недоставленные письма), и передать их на обработку вручную для дальнейшего повышения надежности очереди сообщений.

Acho que você gosta

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