簡體   English   中英

如何獲取我的代碼在azure fabric服務中執行的節點的名稱?

[英]how to get name of node on which my code is executing in azure fabric service?

如何在Azure Fabric Cluster中獲取運行我的代碼的計算機的名稱以進行日志記錄?

我在帶有一些節點的結構集群中運行ac#代碼。 我想記錄一些信息以及機器名稱。 我正在使用FabricRuntime,但它沒有幫助我。 做這個的最好方式是什么 ?

謝謝。

使用ServiceContextNodeContext屬性。

因此,給定服務(有狀態或無狀態)或actorservice的上下文,您可以調用context.NodeContext.NodeName來檢索節點名稱。

ServiceContext還具有許多其他屬性,可用於日志記錄。

有關獲取節點和服務詳細信息的完整示例,請參閱 repo。

好吧,我遇到了同樣的情況,我發現使用Fabric客戶端非常有幫助。 因為我現在正在學習它; 答案可能缺乏一些廣泛的細節。 這是一個示例代碼,您可以進一步查找鏈接的詳細信息並根據要求使用它

    var fabricClient = new FabricClient();
    var apps = fabricClient.QueryManager.GetApplicationListAsync().Result;
    foreach (var app in apps)
    {
        System.Diagnostics.Debug.WriteLine($"Discovered application:'{app.ApplicationName}");

        var services = fabricClient.QueryManager.GetServiceListAsync(app.ApplicationName).Result;
        foreach (var service in services)
        {
            System.Diagnostics.Debug.WriteLine($"Discovered Service:'{service.ServiceName}");

            var partitions = fabricClient.QueryManager.GetPartitionListAsync(service.ServiceName).Result;
            if (service.ServiceKind != System.Fabric.Query.ServiceKind.Stateful )
            {
                continue;
            }
     }

在查詢服務結構以獲取所需信息時非常有用。 現在,對於節點的情況,您可以像這樣簡單地通過查詢管理器進行查詢,並進一步使用節點信息進行更深入的查詢。

var nodes = fabricClient.QueryManager.GetNodeListAsync().Result;

我希望它能幫助像我這樣的人仍然在同一個問題上。

FabricRuntime.GetNodeContext().NodeName

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM