Каналы 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можно вызвать и без указания каналов. В этом случае она вернёт пустой список.