Что касается кода инфраструктуры, я бы предпочел не писать никакого кода. В конце концов, последнее, что вы хотите видеть, - это ошибка в коде вашей инфраструктуры, которая приводит к потере данных / сообщений.
Альтернативой использованию простой служебной шины Azure является использование библиотеки для абстрагирования всего этого кода за вас. В конечном итоге вы объявляете свои сообщения - свои события и команды - и у вас есть обработчики, которые будут запускаться при появлении сообщения. Вся перекачка сообщений, создание очереди, повторные попытки, обработка ошибок, аудит и транзакции, которые являются лишь верхушкой айсберга, сопровождаются такими фреймворками.
Что касается того, какой фреймворк использовать, то есть Nimbus и NServiceBus и, возможно, другие. NServiceBus - это коммерческий продукт, к которому прилагается обширная документация, DevOps и отладка и визуализация утилиты и дополнительная платная поддержка, если она вам понадобится. Вот как получить конечную точку NServiceBus и запустить ее с помощью Azure ServiceBus:
var endpointConfiguration = new EndpointConfiguration("Endpoint1");
endpointConfiguration.SendFailedMessagesTo("error");
var transport = endpointConfiguration.UseTransport<AzureServiceBusTransport>();
var connectionString = Environment.GetEnvironmentVariable("AzureServiceBus.ConnectionString");
transport.ConnectionString(connectionString);
transport.UseTopology<ForwardingTopology>();
var endpointInstance = await Endpoint.Start(endpointConfiguration)
.ConfigureAwait(false);
var message = new Message1
{
Property = "Hello from Endpoint1"
};
await endpointInstance.Send(message).ConfigureAwait(false);
а на стороне получателя все, что вам нужно, это иметь класс обработчика:
public class MyMessageHandler : IHandleMessages<Message1>
{
public Task Handle(Message2 message, IMessageHandlerContext context)
{
//Do your task
Console.WriteLine(message.Property);
return Task.CompletedTask;
}
}
P.S. Я работаю в компании Special Software, создателя NServiceBus, но я использовал оба рекомендуемых фреймворка. Вам нужно будет решить, какой из них вам подходит.
person
Hadi Eskandari
schedule
07.11.2016