我正在尝试Azure函数,并尝试设置管道和过滤器(模式)的复杂结构。为此,我使用了Azure函数。
我的起点是一个HTTP触发的Azure函数。这将从请求的主体中收集一些JSON,并将此消息传递给Azure服务总线。
我肯定在这里遗漏了一些东西(我以前在RabbitMQ中用控制台应用程序做过这件事),但是我如何从HTTP触发的Azure函数向服务总线发布消息。
我找到了一些关于配置我的function.json的参考资料(无论它是什么- im在Visual Studio中构建)。
这个输入/输出(触发器/绑定)是如何工作的-我猜这就是问题here...or?
我已经准备好了我的第一个Azure函数,并且正在接收来自HTTP的数据--到目前为止一切正常。但是该如何继续呢?
**更新**仍然无法正常工作。获得了此代码,但由于http500而失败。(它还说我需要查看日志-日志在哪里?)
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“设置,然后它就起作用了。由于某种原因,它无法拾取我自己的连接字符串。
发布于 2018-06-14 05:26:33
您应该使用服务总线输出绑定。既然你提到了Visual Studio,我假设是C#。最简单的示例如下所示:
[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上找到更多。
发布于 2018-06-14 05:26:49
在Visual Studio中构建时,会自动创建function.json
。您所要做的就是将触发器和输出定义为函数参数的属性(参见此处:https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-service-bus#output)
一个简约的例子:
[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;
}
https://stackoverflow.com/questions/50846268
复制相似问题