使用事件方格
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
這會從佇列提取事件,並列印出其內容。 進程會執行,直到手動結束為止。
注意
事件有更多屬性。 如需詳細資訊,請參閱 事件 頁面。