Как настроить несколько получателей сообщений в MassTransit?

Я рассматриваю возможность использования 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.

6
задан Andrew Theken 9 August 2012 в 18:29
поделиться