首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何从Azure函数向Azure服务总线发布消息?

如何从Azure函数向Azure服务总线发布消息?
EN

Stack Overflow用户
提问于 2018-06-14 05:05:52
回答 2查看 5.7K关注 0票数 3

我正在尝试Azure函数,并尝试设置管道和过滤器(模式)的复杂结构。为此,我使用了Azure函数。

我的起点是一个HTTP触发的Azure函数。这将从请求的主体中收集一些JSON,并将此消息传递给Azure服务总线。

我肯定在这里遗漏了一些东西(我以前在RabbitMQ中用控制台应用程序做过这件事),但是我如何从HTTP触发的Azure函数向服务总线发布消息。

我找到了一些关于配置我的function.json的参考资料(无论它是什么- im在Visual Studio中构建)。

这个输入/输出(触发器/绑定)是如何工作的-我猜这就是问题here...or?

我已经准备好了我的第一个Azure函数,并且正在接收来自HTTP的数据--到目前为止一切正常。但是该如何继续呢?

**更新**仍然无法正常工作。获得了此代码,但由于http500而失败。(它还说我需要查看日志-日志在哪里?)

代码语言:javascript
复制
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";
        }       
    }

**更新2 **这似乎是配置问题。在函数应用程序的应用程序设置中,我不断收到servicebus的授权错误。我用连接字符串添加了默认的"AzureWebJobsServiceBus“设置,然后它就起作用了。由于某种原因,它无法拾取我自己的连接字符串。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-14 05:26:33

您应该使用服务总线输出绑定。既然你提到了Visual Studio,我假设是C#。最简单的示例如下所示:

代码语言:javascript
复制
[FunctionName("ServiceBusOutput")]
[return: ServiceBus("myqueue", Connection = "ServiceBusConnection")]
public static string ServiceBusOutput([HttpTrigger] dynamic input)
{
    return input.Text;
}

然后,使用queue myqueue将带有连接字符串的名为ServiceBusConnection的应用程序设置添加到名称空间(或在属性构造函数中重命名)。

你可以在Azure Service Bus bindings for Azure Functions - Output上找到更多。

票数 6
EN

Stack Overflow用户

发布于 2018-06-14 05:26:49

在Visual Studio中构建时,会自动创建function.json。您所要做的就是将触发器和输出定义为函数参数的属性(参见此处:https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-service-bus#output)

一个简约的例子:

代码语言:javascript
复制
[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;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50846268

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档