Версии:
Spring-cloud-stream-starter-rabbit -> 2.1.0.RELEASE
RabbitMQ -> 3.7.7
Erlang -> 21,1
(1) Я создал образец mq-publisher-demo & mq-subscriber-демо репозитории на github для справки.
Когда был активирован сигнал тревоги памяти
Publisher : удалось опубликовать сообщения.
Подписчик : похоже, подписчик получал сообщения в пакете с небольшими задержками.
При активации Disk Alarm
Publisher : удалось публиковать сообщения.
Подписчик : похоже, что подписчик не получал сообщения, пока была активирована Дисковая тревога.но как только сигнал тревоги был деактивирован, все сообщения были получены подписчиком.
Будут ли буферизованы сообщения где-нибудь?
Это ожидаемоеповедение?(поскольку я ожидал, что RabbitMQ прекратит получать сообщения от издателя, и подписчик никогда не получит никаких последующих сообщений после активации любого из сигналов тревоги.)
(2) SpringДокумент Cloud Stream говорит ниже.Означает ли это вышеупомянутое поведение?(избегая взаимоблокировок и продолжайте публиковать сообщения издателем)
Начиная с версии 2.0, RabbitMessageChannelBinder устанавливает для свойства RabbitTemplate.userPublisherConnection значение true, чтобы не транзакционные производители избегали взаимных блокировок для потребителей, что может произойти, есликэшированные соединения блокируются из-за тревоги памяти на брокере.
(3) Есть ли у нас что-то подобное для Disk alarm
, чтобы избежать взаимоблокировок?
(4) Если сообщение производителя не будет принято RabbitMQ, то возможно ли выдать определенное исключение издателю из Spring-Cloud-Stream (о том, что активированы аварийные сигналы и произошла ошибка публикации)?
Я в новинку об этих тревогах в весеннем облачном потоке, пожалуйста, помогите мне разобраться ясно.Благодарю вас.