簡體   English   中英

如何從Azure函數將消息發布到Azure Service Bus?

[英]How do I post a message to a Azure Service Bus from my Azure function?

我正在使用Azure函數,並嘗試設置管道和篩選器(模式)的復雜構造。 我為此使用Azure函數。

我的起點是HTTP觸發的Azure函數。 這將從請求的主體中收集一些JSON,並將此消息傳遞給Azure服務總線。

我必須在這里丟失一些東西(我之前在RabbitMQ中已經使用控制台應用程序完成過此操作),但是如何從HTTP觸發的Azure函數將消息發布到服務總線。

我發現了一些有關配置我的function.json的參考(無論如何-我在Visual Studio中構建)。

輸入/輸出(觸發/綁定)如何工作-我想這是這里的問題...或?

我已經有了我的第一個Azure函數,並且正在從HTTP接收數據-到目前為止一切順利。 但是如何進行?

**更新**仍然無法使其正常工作。 收到此代碼,它失敗並顯示http500。 (它還說我需要查看og-該日志在哪里?)

public static class EI_WooCommerce_Hub
    {
        [FunctionName("EI_WooCommerce_Hub")]
        [return: ServiceBus("eilogging", Connection = "EIIntegrationServiceBusConnection")]
        public async static Task<string> Run([HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = "EIWooCommerceHub/name/")]HttpRequestMessage req, TraceWriter log)
        {
            log.Info("Webhook triggered from: ");            
            return "Hello World to queue";
        }       
    }

** Update 2 **這似乎是一個配置問題。 在功能應用程序的應用程序設置中,我不斷收到服務總線的授權錯誤。 我用連接字符串添加了默認的“ AzureWebJobsServiceBus”設置,然后它起作用了。 由於某種原因,它無法獲取我自己的連接字符串。

您應該使用服務總線輸出綁定。 由於您提到了Visual Studio,因此我假設使用C#。 最簡單的示例如下所示:

[FunctionName("ServiceBusOutput")]
[return: ServiceBus("myqueue", Connection = "ServiceBusConnection")]
public static string ServiceBusOutput([HttpTrigger] dynamic input)
{
    return input.Text;
}

然后將帶有連接字符串的名為ServiceBusConnection的應用程序設置添加到帶有隊列myqueue的名稱空間(或在屬性構造函數中重命名)。

您可以在Azure功能的Azure服務總線綁定中找到更多信息-輸出

在Visual Studio中構建時,會自動創建function.json 您所要做的就是將觸發器和輸出定義為函數參數的屬性(請參閱此處: https : //docs.microsoft.com/zh-cn/azure/azure-functions/functions-bindings-service-bus#輸出

一個簡單的例子:

[FunctionName("HttpTriggerCSharp")]
public static async Task<HttpResponseMessage> Run(
    [HttpTrigger(AuthorizationLevel.Function, "get")] HttpRequestMessage req,
    [ServiceBus("myqueue")] out string sbMessage,
    TraceWriter log)
{
    log.Info("C# HTTP trigger function processed a request.");

    // parse query parameter
    string name = req.GetQueryNameValuePairs()
        .FirstOrDefault(q => string.Compare(q.Key, "name", true) == 0)
        .Value;

    sbMessage = name;
}

暫無
暫無

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

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