你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用事件网格

CycleCloud 可以将群集和节点事件发送到Azure 事件网格。 在这种情况下,事件网格接受来自生成者 (CycleCloud) 的事件,并将其路由到一个或多个目标。 在本文档中,我们将使用 Azure 存储队列 作为目标。

首先,按照事件网格快速入门中所述创建自定义 事件网格主题和订阅。

其次,配置 CycleCloud 以发布到上面创建的事件网格主题。 单击左上角的 “设置” 齿轮图标,然后双击列表中的 CycleCloud 项。 从下拉列表中选择“事件网格”主题,然后单击“ 保存”。

选择事件网格主题

第三,将节点添加到群集。 这将立即生成两个事件:一个 Microsoft.CycleCloud.ClusterSizeIncreased 事件和一个 Microsoft.CycleCloud.NodeAdded 事件。

最后,创建将处理队列中的事件的脚本。 在本例中,我们将使用 Python 3 SDK

创建名为 get_messages.py 的文件:

from azure.storage.queue import QueueClient, TextBase64DecodePolicy
import json, sys, time

connect_str = sys.argv[1]
queue_name = sys.argv[2]

queue_client = QueueClient.from_connection_string(connect_str, queue_name, message_decode_policy=TextBase64DecodePolicy())

while True:
    messages = queue_client.receive_messages(timeout=60, visibility_timeout=5, messages_per_page=32)
    for msg_batch in messages.by_page():
        for msg in msg_batch:
            message_body = json.loads(msg.content)
            data = message_body["data"]

            print("%s %s %s" % (message_body["eventType"], data.get("status"), data.get("message")))
            queue_client.delete_message(msg.id, msg.pop_receipt)
    time.sleep(1)

然后,使用上面创建的队列的信息调用此代码:

python3 get_messages.py "DefaultEndpointsProtocol=https;AccountName=ACCOUNTNAME;AccountKey=ACCOUNTKEY;EndpointSuffix=core.windows.net" QUEUE_NAME

这将从队列中拉取事件并输出其内容。 进程一直运行到手动结束。

注意

事件上还有更多属性。 有关详细信息,请参阅 事件 页。