Ruby Кролик обменять wait_for_confirm или умереть - PullRequest
1 голос
/ 23 марта 2020

Что было бы лучшим способом включить что-то похожее на метод RabbitMQ channel.waitForConfirmsOrDie(), при этом используя гем Bunny для публичного sh подтверждения?

Сейчас я использую:

if !@channel.using_publisher_confirmations?
    @channel.confirm_select
end

@channel.default_exchange.publish(args)

was_successful = @channel.wait_for_confirms()

Но в идеале для сценария, который мне нужен, я хотел бы иметь гораздо более короткий тайм-аут при ожидании подтверждений. Сейчас кажется, что время ожидания по умолчанию составляет примерно 15 секунд, но это слишком долго, чтобы заблокировать поток. Если я не получу подтверждение, скажем, в течение трех секунд, я бы хотел получить исключение / вернуть false.

Я видел, что в документации RabbitMQ было waitForConfirmsOrDie(), но Банни не имеет этого в качестве метода.

Рассматриваю ли я переписывание некоторых методов для аналогичных функциональность. Кто-нибудь сталкивался с чем-то подобным и нашел хороший способ реализовать это?

1 Ответ

0 голосов
/ 17 апреля 2020

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


ПРИМЕЧАНИЕ: команда RabbitMQ контролирует rabbitmq-users список рассылки и только иногда отвечает на вопросы по StackOverflow.

...