我有一個業務場景,其中第三方客戶端 API 正在呼叫通用 ServiceBus 佇列并發布訊息。我想在 Azure 函式中讀取這些訊息,并根據業務規則將這些訊息寫入不同的服務總線佇列。
為此,我在 .Net 中創建了以下 Azure 函式 (v3)
namespace AzureFunctionTesting
{
public class Function1
{
[FunctionName("Function1")]
public async Task<IActionResult> Run(
[ServiceBusTrigger("QueueName", Connection = "StorageQueueConnectionString")] string myQueueItem,
[ServiceBus("Productqueue", Connection = "QueueConnectionString")] IAsyncCollector<dynamic> outputQueue1,
[ServiceBus("Supplierqueue", Connection = "QueueConnectionString")] IAsyncCollector<dynamic> outputQueue2,
ILogger log)
{
log.LogInformation($"C# ServiceBus queue trigger function processed message: {myQueueItem}");
var document = JsonConvert.DeserializeObject<ShippingSKU>(myQueueItem);
string connectionString = Environment.GetEnvironmentVariable("QueueConnectionString");
ServiceBusClient client = new ServiceBusClient(connectionString);
ServiceBusSender senderQueue1 = client.CreateSender("queue1");
ServiceBusSender senderQueue2 = client.CreateSender("queue2");
using ServiceBusMessageBatch messageBatchQueue1 = await senderQueue1.CreateMessageBatchAsync();
if (document.Id == 1)
{
Console.WriteLine("Entering into Queue 1");
Console.WriteLine(document.FirstName);
await outputQueue1.AddAsync(document);
}
else
{
Console.WriteLine("Entering into Queue 2");
Console.WriteLine(document.LastName);
await outputQueue2.AddAsync(document);
}
return new OkObjectResult(null);
}
}
}
但是當我嘗試運行 azure 函式時,我收到了這個錯誤

我是 Azure Functions 的新手,我們將不勝感激任何幫助。謝謝
編輯:肖恩簡短而簡潔的回答幫助我解決了這個問題。我想多了,解決方案過于復雜。令人驚訝的是,在互聯網上,我什至找不到一個示例代碼從 1 個佇列讀取并寫入另一個佇列的場景。為了完整起見,我在作業代碼下方添加。
namespace AzureFunctionTesting
{
public class Function1
{
[FunctionName("Function1")]
public async Task Run(
[ServiceBusTrigger("QueueName", Connection = "QueueConnectionString")] string myQueueItem,
[ServiceBus("productqueue", Connection = "QueueConnectionString")] IAsyncCollector<dynamic> outputQueue1,
[ServiceBus("supplierqueue", Connection = "QueueConnectionString")] IAsyncCollector<dynamic> outputQueue2,
ILogger log)
{
log.LogInformation($"C# ServiceBus queue trigger function processed message: {myQueueItem}");
var document = JsonConvert.DeserializeObject<ShippingSKU>(myQueueItem);
if (document.Id == 1)
{
Console.WriteLine("Entering into Queue 1");
Console.WriteLine(document.FirstName);
await outputQueue1.AddAsync(document);
}
else
{
Console.WriteLine("Entering into Queue 2");
Console.WriteLine(document.LastName);
await outputQueue2.AddAsync(document);
}
}
}
}
uj5u.com熱心網友回復:
- 您將服務總線觸發器與看起來像 HTTP 觸發器的回傳型別混合在一起。洗掉
IActionResult作為您的回傳型別。 IAsyncCollector是您發送訊息的方式,不要實體化 newServiceBusClient和 senders。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/417133.html
標籤:
上一篇:使用 WPF 做個 PowerPoint 系列 文本 BodyProperties 的 FontScale 與文本字號縮放
