我是使用消息代理的初學者。
我們有一個有多種子服務的票務服務。主管服務通過Web API獲取請求並將其發送到子服務。
任何請求都有一個標題,用於檢測命令類型(如保留,退款,可用性等)。我們使用json來序列化對象。
現在,如何通過MassTransit從發佈商(例如我們的主管系統)發送各種消息類型(不同對象),消費者可以輕鬆使用它?
一般來說,是否可以在MassTransit和rabbitMQ中發送各種消息類型?
每個消費者只有一個處理收到的消息的隊列。如何通過MassTransit和RabbitMQ發送各種命令類型?
感謝
更新
https://dotnetcodr.com/2016/08/02/messaging-with-rabbitmq-and-net-review-part-1-foundations-and-terminology/
我讀這職位適合與MassTransit消息開始,並沒有看到任何例子來使用這些不同的信息類型和其他資源:
我有多個命令,需要各種消息類型與他們發送,但在實施例中只使用一個消息類型,如以下:
發件人
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();
}
接收機
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
是一個接口,我只能得到郵件內容rabbit.ReceiveEndpoint
並轉換爲可用對象。
現在,如何使用各種消息類型,如IReserveTicket
,IRefundTicket
和IGetAvailability
來發送和接收消息?
再次感謝
您是否閱讀過文檔? http://masstransit-project.com/MassTransit/usage/message-contracts.html –
說實話,我不明白你的問題。你爲什麼不能像消息一樣創建儘可能多的消費者,只是發送這些消息?什麼是問題? –
我認爲發送給消費者的消息不能多於一種類型,因此設計的複雜結構的消息包含系統中消息的所有細節,而這種想法是錯誤的。 –