- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
嘿,我正在使用 ServiceBusTrigger
azure 函数来获取队列中收到的消息,然后将它们发送到我的 webapi,该 webapi 将对该内容执行一些操作
[FunctionName("MyAzureFunction")]
public async void Run(
[ServiceBusTrigger("<MyQueue>", Connection = "<MyConnectionString>")] Message myQueueItem, ILogger log)
{
log.LogInformation($"C# ServiceBus queue trigger function processed message: {myQueueItem.ToString()}");
var client = new HttpClient();
// Retrieving the string content from the message
var bodyMessage = Encoding.UTF8.GetString(myQueueItem.Body);
// Calling my API to do something based on the message content
var response = await client.PostAsync("<MyAPIUrl>", new StringContent(bodyMessage, Encoding.UTF8, "application/json"));
// doing something based on the response
}
我一直在阅读有关 azure 函数的内容,为了让它变得更便宜,我阅读了有关持久函数的内容,我期待着如何使用它们,以便我可以根据我的回复做出决定,并且我可以让它与此一起使用ServiceBusTrigger
最佳答案
需要更改当前的 ServiceBusTrigger
函数,以便它调用另一个实际执行该工作的函数:
[FunctionName("MyAzureFunction")] public async void Run(
[ServiceBusTrigger("<MyQueue>", Connection = "<MyConnectionString>")] Message myQueueItem,
[DurableClient] IDurableOrchestrationClient orchestratorClient,
ILogger log) {
log.LogInformation($"C# ServiceBus queue trigger function processed message: {myQueueItem.ToString()}");
// Here is where you need to specify in the first parameter the name of the function to be called
// and the last parameter are the params you'll send to that one
var instanceId = await orchestratorClient.StartNewAsync("MyPostFunction", null, myQueueItem);
log.LogInformation($"C# ServiceBus queue trigger function created an async instance of 'MyPostFunction' with the ID: {instanceId}");
}
然后需要创建另一个 OrchestrationTrigger
类型的函数,如下所示:
[FunctionName("MyPostFunction")] public async void RunOrchestrator([OrchestrationTrigger] IDurableOrchestrationContext context) {
// using the context can be retrieved the parammeters passed in the function above
// in this case I just specify the type of that one and that's it
var myQueueItem = context.GetInput<Message>();
var bodyMessage = Encoding.UTF8.GetString(myQueueItem.Body);
// Create a URI of your API url
var postUri = new Uri($"<MyAPIUrl>");
// depending on your WebAPI you'll need to specify the content type in the headers
var headers = new Dictionary<string, StringValues>() { { "Content-Type", "application/json" } };
// creating durable http request
var request = new DurableHttpRequest(HttpMethod.Post, postUri, headers, bodyMessage);
// Doing the http call async, in this context you'll save money since your function will not be completely waiting for a response
// this one will keep just checking to see if there's a response available or not
var response = await context.CallHttpAsync(request);
// do your stuffs depending in the response
}
就我而言,我必须在请求中指定 header ,否则我曾经得到 415 Unsupported Media Type
可以通过这种方式完成,或者只是创建请求而不在 header 处指定任何 header 开始然后添加这样的内容:
var request = new DurableHttpRequest(HttpMethod.Post, postUri, null, bodyMessage);
request.Headers.Add("Content-Type", "application/json");
两个选项都有效
关于c# - 如何在 ServiceBusTrigger azure 函数中进行持久的后调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62577003/
我有一个带有部署槽的函数应用程序,用于开发测试(例如 azure/绿色) 其中一个函数设置为绑定(bind)到服务总线队列的 ServiceBusTrigger。 我不希望开发部署槽中的功能被服务总线
我的 Azure 函数项目中有 4 个配置文件,代表 4 个环境。 我有以下代码来根据 ASPNETCORE_ENVIRONMENT 红色特定于环境的文件 var executionC
需要使用我的 Azure Function 的服务总线触发器(主题)定义什么连接? 运行看起来像这样 public static void Run([ServiceBusTrigger("testto
遵循 best practices for reuse of Service Bus factories and clients ,建议复用ServiceBusReceiver。 This great
我正在开发微服务(使用 Azure Function Apps),其中包含基于 ServiceBusTrigger 的 Azure Functions,当消息插入服务总线队列时会触发服务总线队列。 我
根据documentation 、服务总线触发器提供了几个元数据属性。这些属性可以用作其他绑定(bind)中的绑定(bind)表达式的一部分或用作代码中的参数。这些属性是 Message 类的成员。示
我想将项目添加到服务总线主题,然后取消“实时”订阅并发送到实时站点,然后取消“开发”订阅并发送到开发站点。 [FunctionName("AddFoo")] public static async T
根据documentation 、服务总线触发器提供了几个元数据属性。这些属性可以用作其他绑定(bind)中的绑定(bind)表达式的一部分或用作代码中的参数。这些属性是 Message 类的成员。示
我想将项目添加到服务总线主题,然后取消“实时”订阅并发送到实时站点,然后取消“开发”订阅并发送到开发站点。 [FunctionName("AddFoo")] public static async T
我有一个 WebJob,它从事件主题读取消息,处理它们,然后创建关于不同主题的消息。 我可以使用服务总线触发器轻松实现这一点。 public void EventSubscriptionToNotif
我已安装 NuGet 包 Micorosft.Azure.WebJobs.ServiceBus,版本 1.0.1(2015 年 3 月 19 日)。我的 WebJob 被服务总线队列上的新消息完美触发
我有一个解析 ServiceBus 主题订阅的 WebJob。 现在我阅读了几个使用WebJob绑定(bind)机制使代码更简洁的示例。 https://github.com/Azure/azure-
我有一个带有服务总线触发器的 Azure 函数: public static async Task Run([ServiceBusTrigger( "%inputTopicName%",
嘿,我正在使用 ServiceBusTrigger azure 函数来获取队列中收到的消息,然后将它们发送到我的 webapi,该 webapi 将对该内容执行一些操作 [FunctionName("
嘿,我正在使用 ServiceBusTrigger azure 函数来获取队列中收到的消息,然后将它们发送到我的 webapi,该 webapi 将对该内容执行一些操作 [FunctionName("
为什么serviceBus会多次触发同一条消息?相同的触发器由服务总线上的相同消息执行: [FunctionName("ProcessOrderFromServiceBusQueue")]
C# .NET Core Azure Functions v2; Microsoft.Azure.ServiceBus 3.2.0、Microsoft.Azure.WebJobs 3.0.2、Micr
Azure WebJobs SDK 的 ServiceBusTrigger 的有害消息处理如何工作?我希望将已出列超过“x”次的服务总线队列消息推送到不同的 ServiceBus(或)存储队列 在线文
我一直在使用 Azure 存储队列通过 QueueTrigger 属性来提供 WebJob。我将 QueueTrigger 配置为将多个项目出队以进行并发处理,如下所示: public static
直到最近它才似乎随机损坏了。 按照指南操作here我之前已经让信号器和服务总线在本地工作得很好。 似乎在我不改变任何我所知道的情况下就以某种方式破坏了,我的 host.json 在其历史记录中没有差异
我是一名优秀的程序员,十分优秀!