我使用與Azure Service Bus相關的Rebus創建概念證明,但是我解析放置的消息時存在一些問題來自外部源的隊列。Rebus Azure ServiceBus - 源自外部服務的消息缺少MessageID
我收到錯誤消息:
Received message with empty or absent 'rbs2-msg-id' header!
我已經通過GitHub上一看,發現某人怎麼也有類似的問題,爲的RabbitMQ此房源,並建議使用裝飾:
https://github.com/rebus-org/Rebus/issues/508
但是我不確定如何爲消息ID做到這一點。
一種選擇我已經走了下來,實際上修改Rebus.AzureTransport代碼來做到這一點:
var messageId = headers.GetValueOrNull(Headers.MessageId);
if (string.IsNullOrEmpty(messageId))
{
messageId = Guid.NewGuid().ToString();
headers[Headers.MessageId] = messageId;
}
但寧願替代!
我注意到另一件事,是一個BrokeredMessage被放在ASB這樣的:
var message = new BrokeredMessage("<xml>This is a test message: " + DateTime.Now+ "</xml>");
它沒有被正確序列化的滷麪接收時。我得到以下錯誤:
Unhandled exception 1 while handling message with ID db13880d-124c-4ed5-993e-96faeca0f140: System.Collections.Generic.KeyNotFoundException: Could not find the key 'rbs2-content-type'
通過重寫串行器,該underdying消息跨越如來:
@strin3http://schemas.microsoft.com/2003/10/Serialization/?6This is a test message: 06/12/2016 07:44:21
,所以我不知道我做錯了。
在此先感謝。
嗨,感謝您的回覆。我將研究進行接收循環的可行性。有一件事我不確定,爲什麼當我覆蓋序列化程序(我在你的ReceiveNonRebusMessageWithRabbitMq例子中使用了Utf8Fallback串行程序)時,會從隊列中錯誤地選擇消息。我會認爲它會被正確解析? – jazzyuk