Я думаю, что многое зависит отчасти от того, какое значение вы придаете отдельным сообщениям.
Если каждый из нас жизненно важен, и вы должны учитывать, что с ними происходит в случае какого-либо сбоя, то такие платформы, как RabbitMQ, могут быть полезны. У RabbitMQ есть брокер, и его можно настроить для режима высокой доступности и высокой надежности. При правильных настройках очереди RabbitMQ будет следить за вашими сообщениями до тех пор, пока некоторая часть вашей системы не будет их использовать.
Чтобы сделать все это, RabbitMQ нужен брокер. Это делает это довольно медленно. Хотя в какой-то момент шла речь о переопределении RabbitMQ поверх базовых протоколов ZeroMQ (zmtp) и об отказе от посредника, вместо этого реализуя все функциональные возможности в конечных точках.
Напротив, ZeroMQ делает гораздо меньше, чтобы гарантировать что, в случае сбоев, ваши сообщения, в конечном итоге, будут доставлены в пункт назначения. Если процесс умирает или происходит сбой сетевого подключения, высока вероятность того, что сообщения будут потеряны. Более поздние версии могут быть настроены для активного мониторинга подключений, так что, если сетевой кабель обрывается или процесс где-то умирает, конечные точки на другом конце сокетов могут быть проинформированы об этом довольно быстро. Если затем реализовать интегрированную среду последовательных процессов поверх структуры акторов ZMQ (подумайте: подтверждения сообщений и т. Д. c. Это замедлит это), вы можете получить систему, в которой конечные точки могут точно знать, что сообщения были переданы. по назначению.
Быть без брокера позволяет ZMQ быть довольно быстро. И он эффективен для различных видов транспорта, от inproc
до tcp
, которые можно смешивать друг с другом. Если вы не беспокоитесь о сбоях процессов или сетевых подключениях, ZMQ дает вам гарантию доставки сообщений прямо из коробки.
Итак, решение, что важно в вашем приложении, помогает выбрать, какую технологию вы используете. Вы собираетесь использовать его как часть - RabbitMQ, ZeroMQ и др. c. Как только вы решили, что проблема «как получить нужные мне шаблоны» сводится к «какие шаблоны поддерживает эта технология». RabbitMQ - это, AFAIK, чисто паб / саб (каждого может быть много), тогда как у ZeroMQ их гораздо больше.