共用方式為


使用事件方格

CycleCloud 可以將叢集和節點事件傳送至Azure 事件方格。 事件方格會接受來自產生者 (的事件,在此案例中為 CycleCloud) ,並將其路由傳送至一或多個目的地。 在本檔中,我們將使用 Azure 儲存體佇列 作為目的地。

首先,建立自訂事件方格主題和訂用帳戶,如 事件方格快速入門中所述。

其次,將 CycleCloud 設定為發佈至上面建立的事件方格主題。 按一下左上方的 [ 設定 ] 齒輪圖示,然後按兩下清單中的 CycleCloud 專案。 從下拉式清單中選取 [事件方格] 主題,然後按一下 [ 儲存]。

選擇事件方格主題

第三,將節點新增至叢集。 這會立即產生兩個事件:事件 Microsoft.CycleCloud.ClusterSizeIncreasedMicrosoft.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

這會從佇列提取事件,並列印出其內容。 進程會執行,直到手動結束為止。

注意

事件有更多屬性。 如需詳細資訊,請參閱 事件 頁面。