azure 如何从Http触发函数向消息总线发送消息?

bt1cpqcv  于 2022-11-17  发布在  其他
关注(0)|答案(1)|浏览(146)

我使用的是ServiceBus.Extensions 5.7.0,并且有一个由HttpTrigger触发的Azure函数。我想通过此函数向Azure消息总线上的主题发送消息。如何实现这一点?我的函数必须返回HttpResponseData作为对http请求的响应。我也无法使用ServiceBusOutput属性,因为不允许在函数之外的参数上使用该属性。

fhg3lkii

fhg3lkii1#

在隔离工作者SDK中,此方案称为多输出方案。您需要返回具有属性的POCO,其中一个属性将Map到HTTP响应,另一个属性将Map到Azure Service Bus实体。

public class MyOutputType
{
   public HttpResponseData HttpResponse { get; set; } // HTTP response [ServiceBusOutput(queueOrTopicName: "dest", Connection = "AzureServiceBus")]
   public string Message { get; set; } // message payload
}

在你的函数中,你会返回一个MyOutputType的示例。

[Function("MultiOutput")]
public static MyOutputType Run([HttpTrigger(AuthorizationLevel.Anonymous, "get")] HttpRequestData req,
            FunctionContext context)
 {
   var response = req.CreateResponse(HttpStatusCode.OK);
   response.WriteString("Success!");

   var myQueueOutput = "Payload for ASB";

    return new MyOutputType
    {
       Message = myQueueOutput,
       HttpResponse = response
    };
 }

相关问题