首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Azure函数输出到队列并返回http响应

Azure函数输出到队列并返回http响应
EN

Stack Overflow用户
提问于 2021-07-27 17:32:52
回答 2查看 60关注 0票数 0

我有一个由http请求触发的Azure函数,它使用绑定来输出到Azure存储队列并返回http响应。

当使用Functions.Worker程序集为dotnet-isolated编码时,这是有效的。首先,我为队列消息和http响应声明了一个类型:

代码语言:javascript
复制
using Microsoft.Azure.Functions.Worker;
using Microsoft.Azure.Functions.Worker.Http;

namespace SmsRouter.AzFunc
{
    public class QueueAndHttpOutputType
    {
        [QueueOutput("%SendSmsQueueName%")]
        public string QueueMessage { get; set; } = "";

        public HttpResponseData HttpResponse { get; set; }
    }
}

然后我使用它作为Azure函数的返回类型:

代码语言:javascript
复制
[Function(nameof(SendSimpleSms))]
        public async Task<QueueAndHttpOutputType> SendSimpleSms([HttpTrigger(AuthorizationLevel.Function, "post", Route = "v1.0/simple-sms")] HttpRequestData req,
            FunctionContext executionContext)

不幸的是,由于this issue,我需要降级我的解决方案来使用DotNet3.1和Azure函数的进程内模型。

有人知道我如何使用老式的进程内Azure函数实现相同的行为吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-07-27 17:47:16

您可以通过在函数本身中注入ServiceBus输出绑定来完成此操作。

代码语言:javascript
复制
public async Task<IActionResult> SendSimpleSms(
        [HttpTrigger(AuthorizationLevel.Function, "post", Route = "v1.0/simple-sms")] HttpRequestData req,
        [Queue("%SendSmsQueueName%", Connection = "QueueConnectionString")] IAsyncCollector<string> queue
            ExecutionContext executionContext)

要在服务总线中添加消息,请调用AddAsync方法,如下所示

代码语言:javascript
复制
await queue.AddAsync(message);

并通过return语句返回http响应;如下所示

代码语言:javascript
复制
return new OkObjectResult(<<Your data here>>);
票数 3
EN

Stack Overflow用户

发布于 2021-07-29 03:13:10

为了写入存储帐户队列,而不是在接受的答案中写入服务总线队列,我使用了以下命令:

代码语言:javascript
复制
[FunctionName(nameof(SendSimpleSms))]
        public async Task<IActionResult> SendSimpleSms([HttpTrigger(AuthorizationLevel.Function, "post", Route = "v1.0/simple-sms")] HttpRequest req,
            [Queue("%SendSmsQueueName%")] IAsyncCollector<string> queue)
        {
                await queue.AddAsync(jsonString);
                ...
                return new OkObjectResult(JsonConvert.SerializeObject(serviceRefResponse));
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68542402

复制
相关文章

相似问题

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