Как создать абонентскую программу, управляемую параллельными событиями, с помощью службы облачной шины Azure? - PullRequest
0 голосов
/ 18 июня 2019

Я пытался разработать программу, управляемую событиями, используя облако Python Azure. У меня есть две машины: первая машина выступает в роли издателя и отправляет сообщение на другую машину, используя службу облачной шины Azure, а вторая машина выступает в качестве подписчика, которая получает эти сообщения, используя службу облачной шины Azure. Здесь я использовал службу облачной шины Azure в качестве посредника для связи между двумя компьютерами.

Я могу выполнить вышеуказанную задачу с помощью цикла, но мне нужно решение, например, на компьютере абонента, когда я получаю новое сообщение, событие должно быть инициировано. (Механизм PUB-SUB)

Я просмотрел множество веб-сайтов и код GitHub, но не смог найти ни одного подходящего примера кода, который бы соответствовал моим потребностям. Справочная сеть:

https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-python-how-to-use-topics-subscriptions

https://github.com/Azure/

https://github.com/MicrosoftDocs/azure-docs/blob/master/articles/service-bus-messaging/service-bus-python-how-to-use-topics-subscriptions.md

pulisher.py
from azure.servicebus.control_client import ServiceBusService, Message, 
Topic, Rule, DEFAULT_RULE_NAME
key_name = '###################' # SharedAccessKeyName from Azure portal
key_value = '######################' # SharedAccessKey from Azure portal
service_namespace = '#######'
sbs  = ServiceBusService(service_namespace,shared_access_key_name=key_name,shared_access_key_value=key_value)      
sbs.create_topic('taskdiscussion')
sbs.create_subscription('taskdiscussion', 'client1')
msg = Message('Hello World!')
sbs.send_topic_message('taskdiscussion', msg)


Subscriber.py

from azure.servicebus.control_client import ServiceBusService, Message,             Topic, Rule, DEFAULT_RULE_NAME
key_name = '##############' # SharedAccessKeyName from Azure portal
key_value = '#############' # SharedAccessKey from Azure portal
service_namespace = '###########'
sbs  = ServiceBusService(service_namespace,shared_access_key_name=key_name,shared_access_key_value=key_value)      
sbs.create_topic('taskdiscussion')
while True:
    try : 
        sbs.create_subscription('taskdiscussion', 'client1')
        msg = sbs.receive_subscription_message('taskdiscussion', 'client1')
        print (msg.body)        
        sbs.delete_subscription('taskdiscussion', 'client1',fail_not_exist=False)
    except Exception as e:
        pass 
...