Есть ли смысл использовать очереди вместо тем и подписок?

Я новичок в служебной шине Azure, я изучаю, сможет ли она заменить нашу инфраструктуру RabbitMQ.

Во всяком случае, мне было интересно, есть ли вообще смысл использовать очереди? Если темы и подписки предлагают одинаковые возможности + обеспечивают гибкость для использования независимо от нескольких источников.

Например, если прямо сейчас у меня есть настройка только с одной группой потребителей (может быть несколько потребителей, но все они используют одну и ту же очередь сообщений), я мог бы работать с Темой, имеющей одну подписку.

Какой смысл в очередях? Обеспечивает ли он какую-то оптимизацию по темам и подпискам?


person areller    schedule 10.02.2019    source источник


Ответы (2)


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

person Sean Feldman    schedule 10.02.2019
comment
Однако это немного проблематично, поскольку вы, возможно, никогда не узнаете, нужно ли вам добавлять еще одну группу потребителей или нет. Я думаю, что RabbitMQ справляется с этим лучше. Вы всегда публикуете в обмен и извлекаете из очереди, которая связывается с этого обмена, так это намного более гибко. Мне было интересно, может быть, работа с тематическими подписками считается лучшей практикой, чем работа напрямую с очередями, поскольку она ближе к семантике RabbitMQ. - person areller; 10.02.2019
comment
Не обязательно проблематично. Это зависит от того, как вы проектируете свою систему. Событие не будет опубликовано в очереди, так как оно не имеет смысла. Он предназначен для использования разными логическими подписчиками. С другой стороны, команда предназначена исключительно для одного логического получателя. Так что очередь более уместна. - person Sean Feldman; 10.02.2019

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

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

person Ranjith Eswaran    schedule 12.02.2019