Автобан pubsub, очереди и темы?

В документации Autobahn немного неясно, какие и как клиенты получают сообщения после их публикации. Из коробки кажется, что сообщение транслируется на всех подписчиков темы - все его получают. Но есть ли способ передать сообщение одному клиенту? Что-то в строках очереди, где несколько издателей добавляют сообщения в очередь, а сообщения распределяются среди «бесплатных» подписчиков в циклическом стиле? Думаю, его также можно назвать паттерном «Простой пират».


person c0dem4gnetic    schedule 14.10.2014    source источник
comment
Pubsub предназначен для публикации определенного события, которое слушают подписчики. Похоже, вам нужна скорее очередь задач с несколькими работниками.   -  person RutledgePaulV    schedule 15.10.2014


Ответы (1)


Как уже отмечалось, обычно публикация идет всем подписчикам.

Если вы хотите опубликовать и направить определенным подписчикам, вы направляете с подходящим параметром. Вот документ WAMP:

http://autobahn.ws/python/reference/autobahn.wamp.html?highlight=eligible#autobahn.wamp.message.Publish

class autobahn.wamp.message.Publish(request, topic, args=None, kwargs=None, acknowledge=None, excludeMe=None, exclude=None, eligible=None, discloseMe=None)

В вашем случае вам нужно будет предоставить список подходящих идентификаторов сеанса, например. подходящий = ( 1,2,3, )

У меня нет примера v2, но, судя по источнику, я бы предположил что-то вроде:

self.publish(u'com.myapp.topic1',  eligible = [100, 200, 300] )

В v1 я использовал эту технику для публикации для подмножества подписчиков. В версии 2 я использую саму тему подписки, чтобы ограничить круг получателей сообщения. Итак, я могу создать com.pub.m1, com.pub.m2, com.pub.m3 и т. д. вместо com.pub, и мои клиенты подпишутся на тему, которая определяет, что они получат.

person Greg    schedule 21.10.2014