繁体   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