Каналы Pub/Sub¶
Pub/Sub, или издатель-подписчик – это модель обмена сообщениями, при которой отправители сообщений (издатели) запрограммированы не отправлять сообщения напрямую получателям (subscribers), а классифицировать опубликованные сообщения по каналам, не имея информации об их подписчиках. Получатели в свою очередь подписываются на интересные им каналы и получают сообщения только из этих каналов, без знания об отправителях сообщений. Такое разделение на издателей и подписчиков обеспечивает хорошую масштабируемость и динамичность топологии сети.
Поддерживаемые команды¶
PUBLISH
– опубликовать сообщение в заданном канале;SUBSCRIBE
– подписать клиента на заданные каналы;UNSUBSCRIBE
– отписать клиента от заданных каналов. Если ни один канал не указан, отписка происходит ото всех каналов;PSUBSCRIBE
– подписать клиента на каналы поglob
-шаблону. Поддерживаемые glob-шаблоны:h?llo
– название канала содержит шаблон?
, где?
– один любой символ. Пример: шаблон подписывает на каналыhello
,hallo
иhxllo
, но неheello
;h*llo
– название канала содержит шаблон*
, где*
– любая последовательность символов, включая пустую строку. Примеры:hllo
,heeeello
;h[ae]llo
– название канала содержит шаблон[]
, где[]
– один из символов, заключенных в скобки. Пример: шаблон подписывает на каналыhello
иhallo
, но неhillo
;
PUNSUBSCRIBE
– отписать клиента от каналов поglob
-шаблону. Поддерживаемыеglob
-шаблоны приведены в командеPSUBSCRIBE
. Если ни один канал не указан, отписка происходит ото всех каналов;PUBSUB CHANNELS
– показать текущие активные каналы. Активный канал – это канал Pub/Sub с одним подписчиком или более, исключая клиентов, подписанных на шаблоны.Если шаблон не указан, команда выводит все активные каналы. Если шаблон задан, отображаются только те каналы, которые соответствуют этому glob-шаблону;
PUBSUB NUMPAT
– вернуть количество уникальных шаблонов, на которые подписаны клиенты через командуPSUBSCRIBE
. Обратите внимание, что это не количество клиентов, подписанных на шаблоны, а общее количество уникальных шаблонов, на которые подписаны все клиенты;PUBSUB NUMSUB
– вернуть количество подписчиков (кроме клиентов, подписанных на шаблоны) для указанных каналов. КомандуPUBSUB NUMSUB
можно вызвать и без указания каналов. В этом случае она вернёт пустой список.