Работа с дублированием в очереди сообщений

Я спорил со своим программистом о том, как лучше это сделать. У нас есть данные, которые поступают со скоростью около 10000 объектов в секунду. Это необходимо обрабатывать асинхронно, но достаточно свободного порядка, поэтому каждый объект вставляется циклически в одну из нескольких очередей сообщений (также есть несколько производителей и потребителей). Размер каждого объекта ~ 300 байт. И он должен быть долговечным, чтобы MQ были сконфигурированы для сохранения на диске.

Проблема в том, что часто эти объекты дублируются (поскольку они неизбежно дублируются в данных, которые поступают к производителю). У них действительно есть 10-байтовые уникальные идентификаторы. Это не катастрофа, если объекты дублируются в очереди, но это так, если они дублируются при обработке после того, как были взяты из очереди. Как лучше всего добиться максимально приближенной к линейной масштабируемости, не допуская дублирования при обработке объектов? И, возможно, связанный с этим, должен ли весь объект храниться в очереди сообщений или только идентификатор с телом хранится в чем-то вроде кассандры?

Спасибо!

Редактировать: Подтверждено, где происходит дублирование. Кроме того, до сих пор у меня было 2 рекомендации для Redis. Раньше я рассматривал RabbitMQ. Каковы плюсы и минусы каждого в отношении моих требований?

10
задан Max 28 June 2011 в 12:44
поделиться