私はメッセージブローカーの初心者です。
私たちは複数のサブサービスを持つ発券サービスを持っています。スーパバイザサービスは、Web APIの助けを借りて要求を取得し、それらをサブサービスに送信します。
リクエストには、コマンドの種類(予約、払い戻し、空き状況など)を検出するためのヘッダーがあります。私たちはjsonを使ってオブジェクトを直列化します。
マストランスミットは、スーパバイザシステムなどのパブリッシャーからさまざまなメッセージタイプ(さまざまなオブジェクト)を、消費者が簡単に使用できるように送信する方法を教えてください。
一般的に、MassTransitとrabbitMQでさまざまなメッセージタイプを送信できますか?
すべてのコンシューマには、受信したメッセージを処理するキューが1つしかありません。私はこの記事はMassTransitとメッセージングで起動するに合わせ、これらの様々なメッセージタイプを使用して任意の例を見ていないと読んMassTransitとRabbitMQでさまざまなコマンドタイプを送信する方法は?
おかげ
更新
https://dotnetcodr.com/2016/08/02/messaging-with-rabbitmq-and-net-review-part-1-foundations-and-terminology/
別のリソース:
私は複数のコマンドがあり、さまざまなメッセージタイプが必要です彼らと一緒に送るが、例にのみ、以下のようなメッセージ・タイプを使用する:レシーバ
private static void RunMassTransitReceiverWithRabbit()
{
IBusControl rabbitBusControl = Bus.Factory.CreateUsingRabbitMq(rabbit =>
{
IRabbitMqHost rabbitMqHost = rabbit.Host(new Uri("rabbitmq://localhost:5672/Ticket"), settings =>
{
settings.Password("Kalcho^Milano");
settings.Username("ticketadmin");
});
rabbit.ReceiveEndpoint(rabbitMqHost, "mycompany.domains.queues", conf =>
{
conf.Consumer<RegisterCustomerConsumer>();
});
});
rabbitBusControl.Start();
Console.ReadKey();
rabbitBusControl.Stop();
}
IRegisterCustomer
を
送信者
private static void RunMassTransitPublisherWithRabbit()
{
string rabbitMqAddress = "rabbitmq://localhost:5672/Ticket";
string rabbitMqQueue = "mycompany.domains.queues";
Uri rabbitMqRootUri = new Uri(rabbitMqAddress);
IBusControl rabbitBusControl = Bus.Factory.CreateUsingRabbitMq(rabbit =>
{
rabbit.Host(rabbitMqRootUri, settings =>
{
settings.Password("Kalcho^Milano");
settings.Username("ticketadmin");
});
});
Task<ISendEndpoint> sendEndpointTask = rabbitBusControl.GetSendEndpoint(new Uri(string.Concat(rabbitMqAddress, "/", rabbitMqQueue)));
ISendEndpoint sendEndpoint = sendEndpointTask.Result;
Task sendTask = sendEndpoint.Send<IRegisterCustomer>(new
{
Address = "New Street",
Id = Guid.NewGuid(),
Preferred = true,
RegisteredUtc = DateTime.UtcNow,
Name = "Nice people LTD",
Type = 1,
DefaultDiscount = 0
});
Console.ReadKey();
}
はインタフェースであり、私は得ることができますメッセージの内容はrabbit.ReceiveEndpoint
になり、使用可能なオブジェクトに変換されます。
ここで、IReserveTicket
,IRefundTicket
、IGetAvailability
などのさまざまなメッセージタイプを使用してメッセージを送受信する方法はありますか。
おかげで再び
あなたは文書を読んだことがありますか? http://masstransit-project.com/MassTransit/usage/message-contracts.html –
正直言って、私はあなたの問題を理解していません。なぜあなたはメッセージを持っているだけ多くの消費者を作り、それらのメッセージを送ることができませんか?どうした? –
私はそれが消費者に送られる1種類以上のメッセージではないと考えました。したがって、システム内のメッセージのすべての詳細を含むメッセージで設計された複雑な構造を持ち、この考え方は間違っています。 –