Създавам доказателство за концепция, използвайки Rebus във връзка с Azure Service Bus, но имам малък проблем с анализирането на съобщение, което е поставено на опашката от външен източник.
Получавам съобщение за грешка:
Получено съобщение с празен или липсващ хедър „rbs2-msg-id“!
Прегледах 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>");
Не се сериализира правилно, когато се получава от Rebus. Получавам следната грешка:
Необработено изключение 1 при обработка на съобщение с ID db13880d-124c-4ed5-993e-96faeca0f140: System.Collections.Generic.KeyNotFoundException: Не може да се намери ключът „rbs2-content-type“
Чрез замяна на сериализатора, основното съобщение се среща като:
@strin3http://schemas.microsoft.com/2003/10/Serialization/?6Това е тестово съобщение: 06/12/2016 07:44:21
така че не съм сигурен какво правя погрешно.
Благодаря предварително.