Я собираюсь преобразовать приложение с использованием MT3 с RabbitMQ в использование Azure Service Bus, а MassTransit не настраивает очередь таким же образом в Azure, как и с RMQ, и с документацией, находящейся на светлой стороне (here) Я хотел посмотреть, разрешил ли кто-нибудь еще этоMassTransit 3 с созданием очередей шины Azure
Я использую MT 3.4 и Microsoft.ServiceBus 3.0 для TokenProvider, у меня есть класс утилиты, который создает шину (следующий это example):
public static IBus CreateBus()
{
var busControl = Bus.Factory.CreateUsingAzureServiceBus(sbc =>
{
var host = sbc.Host(new Uri("sb://<sbname>.servicebus.windows.net/"), h =>
{
h.OperationTimeout = TimeSpan.FromSeconds(5);
h.TokenProvider = TokenProvider.CreateSharedAccessSignatureTokenProvider("<KeyName>", "<Key>");
});
sbc.ReceiveEndpoint(host, "command_queue", ep =>
{
ep.SubscribeMessageTopics = true;
ep.UseRetry(Retry.Incremental(5, TimeSpan.FromSeconds(5), TimeSpan.FromSeconds(5)));
});
});
return busControl;
}
у меня есть контроллер Web API, который использует ному s опубликовать команды в очереди:
[RoutePrefix("customer")]
public class CustomerController : ApiController
{
private readonly IBus _serviceBus;
public CustomerController()
{
_serviceBus = AzureServiceBusUtils.CreateBus();
}
[HttpPost, Route("register")]
public async Task<HttpResponseMessage> Register()
{
var command = JsonConvert.DeserializeObject<RegisterNewCustomerCommand>(Encoding.ASCII.GetString(Request.Content.ReadAsByteArrayAsync().Result));
await _serviceBus.Publish(command);
return Request.CreateResponse(HttpStatusCode.OK);
}
}
RegisterNewCustomerCommand только простое имя, адрес и т.д. C# класс:
namespace AZSB.Commands
{
public class RegisterNewCustomerCommand
{
public string Name { get; }
...
public RegisterNewCustomerCommand(...) {...}
}
}
Теперь, когда я огонь сообщение через, тема создана на Azure (AZSB.Commands/RegisterNewCustomerCommand), но это не связано так, как я ожидал бы от команды command_queue, и добавлять к нему, когда я нажимаю на тему на портале Azure, панель сведений просто зависает (поэтому я не могу вручную настройте его на созданную вручную очередь)
Am I mi что-то? Alastair
Это похоже на трюк, спасибо! Я полагаю, что он просто гарантирует, что процессы будут срабатывать в правильном порядке. Я сфокусировался на том, чтобы первая часть приложения работала в первую очередь, но это привело к теме без очереди. По-видимому, под-сторона исправила это. – Alastair