Как отменить определенную работу в очереди? - PullRequest
0 голосов
/ 17 октября 2018

Я использую RabbitMQ для создания очереди заданий.

Допустим, есть задание DO_SOMETHING, которое действует в { item: 'A'} и запланировано на ближайшее время.

Моя очередь будетиметь такие задания, как:

[DO_SOMETHING { item: 'B' }, DO_SOMETHING { item: 'A' }, DO_SOMETHING { item: 'C' }] 

Допустим, что-то происходит так, что DO_SOMETHING { item: 'A' } больше не требуется.

Есть ли способ выборочно отменить / удалить его из заданий, поставленных в очередь, или следуетЯ просто использую что-то вроде Redis?

1 Ответ

0 голосов
/ 19 октября 2018

Нельзя сказать, что «такого инструмента нет», потому что я могу ошибаться, но очереди RabbitMQ имеют формат FIFO, поэтому вы всегда используете с самого начала - в том порядке, в котором были созданы задания.

Самое простое решение - эточтобы проверить, была ли данная работа отменена после ее использования, и подтвердите кролику, что эта работа была обработана.

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

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