无法使用 Azure 函数将消息发送到服务总线队列
Unable to send message into Service Bus Queue using Azure function
我有如下所示的 Azure 功能 -
[FunctionName("Demo")]
public static void Run([ServiceBusTrigger("%Demo-Queue%", Connection = "AzureWebJobsBPGAServiceBus")]string myQueueItem,
[ServiceBus("%Update-Queue%", Connection = "AzureWebJobsBPGAServiceBus")] ICollector<BrokeredMessage> updateMessage,
TraceWriter log)
{
string query = "SELECT Id FROM MyTable";
var data = dbs.GetData(query).GetAwaiter().GetResult();
BrokeredMessage brokeredMessage;
foreach (var item in data)
{
JObject jObject = new JObject(new JProperty("Id", item), new JProperty("MessageId", new Guid(item)));
brokeredMessage = new BrokeredMessage(jObject.ToString());
updateMessage.Add(brokeredMessage);
}
}
But message going in dead letter queue . why ? Message format is also correct.Any clue ?
如果消息被移动到死信队列,原因可能是one of these。将死信消息移动到死信队列时,将添加两个自定义属性(DeadLetterReason 和 DeadLetterErrorDescription),尝试读取这些属性以查找原因。
您的函数由 Demo-Queue
中的消息触发,消息 myQueueItem
was/were 在被触发之前至少被发送到您的函数 Demo
10 次移动到死信队列。 Failing >=10 times 意味着你的 Function 执行没有成功 >= 10 次。
请搜索您的 Function Logs to see if there are any error messages to indicate why your Function execution did not succeed, e.g. due to timeout or errors in your Function code. If it's due to timeout, you may change the autoRenewTimeout
property in your host.json 以查看是否可以解决问题。
请注意,如果您有消费计划,autoRenewTimeout
需要保持在最大执行时间 5 分钟(默认)或配置的 functionTimeout
属性 的限制内(荣幸地最多 10 分钟)在你的 host.json
文件中。
我有如下所示的 Azure 功能 -
[FunctionName("Demo")]
public static void Run([ServiceBusTrigger("%Demo-Queue%", Connection = "AzureWebJobsBPGAServiceBus")]string myQueueItem,
[ServiceBus("%Update-Queue%", Connection = "AzureWebJobsBPGAServiceBus")] ICollector<BrokeredMessage> updateMessage,
TraceWriter log)
{
string query = "SELECT Id FROM MyTable";
var data = dbs.GetData(query).GetAwaiter().GetResult();
BrokeredMessage brokeredMessage;
foreach (var item in data)
{
JObject jObject = new JObject(new JProperty("Id", item), new JProperty("MessageId", new Guid(item)));
brokeredMessage = new BrokeredMessage(jObject.ToString());
updateMessage.Add(brokeredMessage);
}
}
But message going in dead letter queue . why ? Message format is also correct.Any clue ?
如果消息被移动到死信队列,原因可能是one of these。将死信消息移动到死信队列时,将添加两个自定义属性(DeadLetterReason 和 DeadLetterErrorDescription),尝试读取这些属性以查找原因。
您的函数由 Demo-Queue
中的消息触发,消息 myQueueItem
was/were 在被触发之前至少被发送到您的函数 Demo
10 次移动到死信队列。 Failing >=10 times 意味着你的 Function 执行没有成功 >= 10 次。
请搜索您的 Function Logs to see if there are any error messages to indicate why your Function execution did not succeed, e.g. due to timeout or errors in your Function code. If it's due to timeout, you may change the autoRenewTimeout
property in your host.json 以查看是否可以解决问题。
请注意,如果您有消费计划,autoRenewTimeout
需要保持在最大执行时间 5 分钟(默认)或配置的 functionTimeout
属性 的限制内(荣幸地最多 10 分钟)在你的 host.json
文件中。