В документации Autobahn немного неясно, какие и как клиенты получают сообщения после их публикации. Из коробки кажется, что сообщение транслируется на всех подписчиков темы - все его получают. Но есть ли способ передать сообщение одному клиенту? Что-то в строках очереди, где несколько издателей добавляют сообщения в очередь, а сообщения распределяются среди «бесплатных» подписчиков в циклическом стиле? Думаю, его также можно назвать паттерном «Простой пират».
Автобан pubsub, очереди и темы?
comment
Pubsub предназначен для публикации определенного события, которое слушают подписчики. Похоже, вам нужна скорее очередь задач с несколькими работниками.
- person RutledgePaulV   schedule 15.10.2014
Ответы (1)
Как уже отмечалось, обычно публикация идет всем подписчикам.
Если вы хотите опубликовать и направить определенным подписчикам, вы направляете с подходящим параметром. Вот документ WAMP:
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