Я рассматриваю возможность использования MassTransit для публикации события одного процесса всем другим процессам, которые заботятся об этом событии. В моей среде несколько процессов, подписанных на это событие, могут выполняться на одном и том же компьютере.
Основываясь на примере кода MassTransit, вот ОЧЕНЬ простое доказательство -концепции -, которая не пытается иметь дело с процессами множественного -приведения (, которые также будут распределены по многим машинам ). Рассматривайте «Сообщение» ниже как «Событие»,и что я хочу, чтобы каждый экземпляр этого процесса получал это сообщение:
using System;
using MassTransit;
namespace BasicPubSub
{
public class Message
{
public String Text { get; set; }
}
public class Program
{
static void Main(string[] args)
{
//initialize the bus
var bus = ServiceBusFactory.New(sbc =>
{
sbc.UseMsmq();
//cause the DTC and MSMQ to get installed/fixed if needed.
sbc.VerifyMsDtcConfiguration();
sbc.VerifyMsmqConfiguration();
//sbc.UseMulticastSubscriptionClient();//Doesn't behave for a private queue.
sbc.ReceiveFrom("msmq://localhost/test_queue");
//Listen for interesting events.
sbc.Subscribe(subs =>
{
subs.Handler(msg => Console.WriteLine(msg.Text));
});
});
//stay open until the user types "exit"
var message = "";
do
{
message = Console.ReadLine();
//broadcast the message
bus.Publish(new Message { Text = message });
} while (message != "exit");
}
}
}
Если я запускаю несколько экземпляров этого приложения C #, только один из экземпляров получает сообщение, но мне нужны все экземпляры, чтобы получить его. Такое поведение согласуется с классическим представлением об очереди, так что меня это устраивает.
Я хочу знать, могу ли я использовать MSMQ/MassTransit для публикации сообщения, которое получат все подписчики, в отличие от того, чтобы один подписчик исключил его из очереди, а другие не получили. Возможно, я пытаюсь использовать молоток, а мне нужна кисть?
Просто чтобы внести ясность, я не рассматриваю совместное использование одной очереди для разных типов сообщений, я хочу настроить «peer -to -peer» pub -для определенного типа сообщений, с помощью МТ и MSMQ.