[英]Azure service bus - message going straight to dead letter queue
我有以下代碼將消息發送到總線:
var queueClient = new QueueClient(ServiceBusConnectionString, QueueName);
var message = new Message(poco.SerializeToBytes());
await queueClient.SendAsync(message);
但他們似乎直接進入了死亡信件消息計數:
我還創建了一個Azure函數,它將選擇消息:
[FunctionName("ServiceBusFunction")]
public static void Run([ServiceBusTrigger("schedule", AccessRights.Listen, Connection = "ServiceBusConnection")]byte[] myQueueItem, TraceWriter log)
{
log.Info($"C# ServiceBus queue trigger function processed message: {myQueueItem}");
}
當我關閉該功能時,在創建此功能之前,消息進入ACTIVE MESSAGE COUNT。 我已嘗試在本地運行該函數,但該函數未被命中。 我覺得自己錯過了從函數中獲取總線上的消息方面的基本信息嗎?
如果您轉到功能應用程序日志,您可能會看到錯誤
異常綁定參數'myQueueItem'。 Microsoft.Azure.WebJobs.ServiceBus:ContentType為“null”的BrokeredMessage無法反序列化為byte [],並顯示以下消息:'反序列化System.Byte []類型的對象時出錯。 輸入源格式不正確。'。 System.Runtime.Serialization:反序列化System.Byte []類型的對象時出錯。 輸入源格式不正確。 System.Runtime.Serialization:輸入源格式不正確。 2018-03-01T15:14:41.578
功能應用程序嘗試處理您的消息10次(默認),然后將其放入DLQ
10次傳遞嘗試后無法使用消息。
問題與您從“新的”.NET標准服務總線客戶端發送消息的事實有關,而Function App v1正在使用“舊的” BrokeredMessage
客戶端。 並且它們在二進制級別上不兼容,請參閱此問題 。
在功能應用程序v2包括服務總線綁定准備好之前,您應該最好使用舊的Service Bus客戶端發送消息。 如果您必須使用新客戶端,請參閱上面鏈接的問題中的一些解決方法,例如此評論 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.