簡體   English   中英

在 azure 服務總線中使用 python 識別預定的消息計數

[英]Identifying scheduled message count using python in azure service bus

我正在使用 Python 來監控 Azure 服務總線實現的狀態,目前使用下面的代碼來識別消息計數。 我使用此消息計數來確保隊列沒有建立,這有助於確定輔助角色(從隊列中使用)是否未正常運行。

QueueList = bus_service.list_queues()
for queue in QueueList:
    queueDetails = bus_service.get_queue(queue.name)
    api.Metric.send(metric="ServiceBus.%s.MessageCount" % (bus_service.service_namespace), points=queueDetails.message_count, host=queue.name)

此代碼使用“queueDetails.message_count”效果很好,我們將結果提供給監控工具,前提是消息是活動消息並立即發出。 當某些東西被安排在稍后的時間出去並且被設置為預定消息而不是活動消息時,就會出現問題。 這會破壞我們的監控,因為看起來有些消息沒有發送,而實際上它們只是被延遲了。

我在 powershell 中玩過這個,看到 powershell,使用 Microsoft.ServiceBus.dll 可以返回一個通用的“消息計數”,但也有能力將其分解為活動的、預定的、死信等。

我知道python SDK只是API的包裝器,但我想知道除了“使用powershell”之外是否有人有任何想法。 雖然我將 powerhsell 作為最后的手段,但如果可能的話,我想繼續使用 python。

謝謝大家的幫助。 希望這篇文章有足夠的細節。 長期 StackOverflow 用戶,第一次發帖。

根據您的描述,根據我的理解,我認為您希望從具有資源管理的服務總線的Queue REST API Get的響應中獲取messageCount & countDetails ,如下所示。

在此處輸入圖片說明

對於 Python 編程,首先需要通過 pip 命令pip install azure==2.0.0rc msrest msrestazure azure-mgmt-servicebus安裝一些需要的包。

這是我的示例代碼。

from azure.common.credentials import ServicePrincipalCredentials
from azure.mgmt.servicebus import ServiceBusManagementClient

subscription_id = '<your-subscription-id>'

credentials = ServicePrincipalCredentials(
    client_id = '<your-client-id-registed-on-AzureAD>',
    secret = '<your-client-secret>',
    tenant = '<your-tenant-id>'
)

# Or using User/Password.
# For more details, see http://azure-sdk-for-python.readthedocs.io/en/latest/quickstart_authentication.html
# credentials = UserPassCredentials(
#            'user@domain.com',      # Your user
#            'my_password',          # Your password
# )

servicebus_client = ServiceBusManagementClient(credentials, subscription_id)

resource_group = '<your-servicebus-resource-group>'
namespace_name = '<your-servicebus-namespace-name>'
queue_name = '<your-queue-name>'

queue = servicebus_client.queues.get(resource_group, namespace_name, queue_name)
print queue.message_count, queue.count_details

同時,如果您在執行上述操作時遇到權限錯誤信息,請參考https://github.com/JamborYao/ArmManagement解決。

以下是在 v7 中獲取它的方法https://pypi.org/project/azure-servicebus/7.0.0/#description

你有list_queues_runtime_propertiesServiceBusAdministrationClient ,返回QueueRuntimeProperties其中有total_message_count等。

請查看此處的文檔https://docs.microsoft.com/en-us/python/api/azure-servicebus/azure.servicebus.management.queueruntimeproperties?view=azure-python

暫無
暫無

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

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