Я пытался разработать программу, управляемую событиями, используя облако 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