RabbitMQ - кто использует? Вопрос.
От: Shmj Ниоткуда  
Дата: 15.06.21 17:51
Оценка:
Можно ли через сабж сделать так:

1. Публикуешь событие.

2. Один из подписчиков как-бы забивает его под себя, чтобы другие его не начали обрабатывать параллельно. При этом не должно быть указано какой именно подписчик должен забить событие. Нужно это, к примеру, для того, чтобы подписчики могли запускаться параллельно на n серверах и можно было безболезненно включать/отключать новые сервера с обработчиками.

3. Если подписчик событие обработать не смог — чтобы снова оно возникло и были оповещены другие, которые способны обработать.

?
Re: RabbitMQ - кто использует? Вопрос.
От: Danchik Украина  
Дата: 15.06.21 18:00
Оценка: +1
Здравствуйте, Shmj, Вы писали:

S>Можно ли через сабж сделать так:


S>1. Публикуешь событие.


S>2. Один из подписчиков как-бы забивает его под себя, чтобы другие его не начали обрабатывать параллельно. При этом не должно быть указано какой именно подписчик должен забить событие. Нужно это, к примеру, для того, чтобы подписчики могли запускаться параллельно на n серверах и можно было безболезненно включать/отключать новые сервера с обработчиками.


S>3. Если подписчик событие обработать не смог — чтобы снова оно возникло и были оповещены другие, которые способны обработать.


S>?


https://www.rabbitmq.com/confirms.html
Re[2]: RabbitMQ - кто использует? Вопрос.
От: Shmj Ниоткуда  
Дата: 15.06.21 18:03
Оценка:
Здравствуйте, Danchik, Вы писали:

D>https://www.rabbitmq.com/confirms.html


Эт вроде можно подтвердить, когда уже обработка произошла.

А вот если хочется подтвердить, что начата обработка и что другие как-то должны понять, что не следует продолжать обработку параллельно. Или же чтобы только 1 подписчик рандомно получил (т.е. чтобы из n подписчиков система выбрала рандомно одного, который бы обработал).
Отредактировано 15.06.2021 18:03 Shmj . Предыдущая версия .
Re[3]: RabbitMQ - кто использует? Вопрос.
От: fmiracle  
Дата: 15.06.21 18:13
Оценка: +1
Здравствуйте, Shmj, Вы писали:

D>>https://www.rabbitmq.com/confirms.html

S>Эт вроде можно подтвердить, когда уже обработка произошла.
S>А вот если хочется подтвердить, что начата обработка и что другие как-то должны понять, что не следует продолжать обработку параллельно. Или же чтобы только 1 подписчик рандомно получил (т.е. чтобы из n подписчиков система выбрала рандомно одного, который бы обработал).

Это оно и есть. Получил сообщение — все, другие его (пока) не получат. Дальше или подтверждаешь обработку и тогда оно уже совсем считается обработанным или отклоняешь или умираешь — и оно снова появляется в очереди.
Re: RabbitMQ - кто использует? Вопрос.
От: Ночной Смотрящий Россия  
Дата: 17.06.21 08:01
Оценка: +1
Здравствуйте, Shmj, Вы писали:

S>1. Публикуешь событие.


Можно

S>2. Один из подписчиков как-бы забивает его под себя, чтобы другие его не начали обрабатывать параллельно. При этом не должно быть указано какой именно подписчик должен забить событие. Нужно это, к примеру, для того, чтобы подписчики могли запускаться параллельно на n серверах и можно было безболезненно включать/отключать новые сервера с обработчиками.


Так все и работает.

S>3. Если подписчик событие обработать не смог — чтобы снова оно возникло и были оповещены другие, которые способны обработать.


И так тоже. А еще можно добавить счетчик попыток, и если он превышен, то сообщение будет отправляться в DLQ. На DLQ нужно будет вешать отдельный лисенер.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.