RabbitMQでMT3を使用するアプリケーションをAzureサービスバスに変換していますが、MassTransitではRMQと同じようにAzureでキューを設定していません。 (here)他の誰かがこの問題を解決したかどうかを知りたいのですが。MassTransit 3、Azureサービスバスでキューを作成
私はTokenProvider用のMT 3.4とMicrosoft.ServiceBus 3.0を使用しています。この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;
}
私はbuを使用する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何かを何かssing? Alastair
これはトリックをやったようです、ありがとう!私はプロセスが正しい順序で起動することを保証していると思います。私は最初にアプリケーションのpub-sideを稼働させることに重点を置いていましたが、これはキューを持たないトピックになりました。サブサイドはそれを解決したようです。 – Alastair