Здравствуйте, Shmj, Вы писали:
S>Можно ли через сабж сделать так:
S>1. Публикуешь событие.
S>2. Один из подписчиков как-бы забивает его под себя, чтобы другие его не начали обрабатывать параллельно. При этом не должно быть указано какой именно подписчик должен забить событие. Нужно это, к примеру, для того, чтобы подписчики могли запускаться параллельно на n серверах и можно было безболезненно включать/отключать новые сервера с обработчиками.
S>3. Если подписчик событие обработать не смог — чтобы снова оно возникло и были оповещены другие, которые способны обработать.
S>?
https://www.rabbitmq.com/confirms.html
Здравствуйте, Shmj, Вы писали:
D>>https://www.rabbitmq.com/confirms.html
S>Эт вроде можно подтвердить, когда уже обработка произошла.
S>А вот если хочется подтвердить, что начата обработка и что другие как-то должны понять, что не следует продолжать обработку параллельно. Или же чтобы только 1 подписчик рандомно получил (т.е. чтобы из n подписчиков система выбрала рандомно одного, который бы обработал).
Это оно и есть. Получил сообщение — все, другие его (пока) не получат. Дальше или подтверждаешь обработку и тогда оно уже совсем считается обработанным или отклоняешь или умираешь — и оно снова появляется в очереди.
Здравствуйте, Shmj, Вы писали:
S>1. Публикуешь событие.
Можно
S>2. Один из подписчиков как-бы забивает его под себя, чтобы другие его не начали обрабатывать параллельно. При этом не должно быть указано какой именно подписчик должен забить событие. Нужно это, к примеру, для того, чтобы подписчики могли запускаться параллельно на n серверах и можно было безболезненно включать/отключать новые сервера с обработчиками.
Так все и работает.
S>3. Если подписчик событие обработать не смог — чтобы снова оно возникло и были оповещены другие, которые способны обработать.
И так тоже. А еще можно добавить счетчик попыток, и если он превышен, то сообщение будет отправляться в DLQ. На DLQ нужно будет вешать отдельный лисенер.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Здравствуйте, Danchik, Вы писали:
D>https://www.rabbitmq.com/confirms.html
Эт вроде можно подтвердить, когда уже обработка произошла.
А вот если хочется подтвердить, что начата обработка и что другие как-то должны понять, что не следует продолжать обработку параллельно. Или же чтобы только 1 подписчик рандомно получил (т.е. чтобы из n подписчиков система выбрала рандомно одного, который бы обработал).