Есть ли аналоги rabbitmq (каллбеки, удаление из очереди)?
Использую RabbitMQ - на данный момент основная проблема это получение результата работы - чтобы его получить мне приходится создавать две очереди
QueueName - здесь очередь сообщений на которую подписаны порядка 20 серверов
QueueNameResult - здесь очередь сообщений на которую подписан только главный сервер, и получает результаты работы
Плюс ко всему нет возможности удалить из очереди какие то пакеты которые стали неактуальны, приходится использовать обертку со своими идентификаторами, и если на главный сервер приходит пакет с устаревшим идентификатором - я его выбрасываю
Основные требования это наличие возможности без проблем получить результат работы, и при необходимости остановить\удалить из очереди обработку пакета
Плюс ко всему нет возможности удалить из очереди какие то пакеты которые стали неактуальны, приходится использовать обертку со своими идентификаторами, и если на главный сервер приходит пакет с устаревшим идентификатором - я его выбрасываю
Это одно из ключевых в очереди - нельзя просто так взять и удалить сообщение. Все что попало в очередь в ней остается пока кто-то не прочитает (ну или очередь не удалиться или сервак не навернется :-) )
Основные требования это наличие возможности без проблем получить результат работы, и при необходимости остановить\удалить из очереди обработку пакета
Может тогда какая-то реализация rpc? Почему именно очереди?
Ильдар Гизетдинов, Ну, если событие асинхронное и может занять длительное время и их надо выполнять независимо от других - тогда очереди лучше решение чем RPC.
Но придется работать с callback-очередями. Можно поискать RPC на основании очередей - я такое делал. Для клиентского кода вызов выглядит как синхронный, хотя под капотом там работают очереди.
Вообще контекст задачи не совсем ясен, потому больше нечего мне добавить