Пример #1
0
        static void Main(string[] args)
        {
            Console.WriteLine("Setting up MessageBus");
            var messageBus = new MessageBusBuilder().UseLogger(new DelegateLogger(Console.WriteLine)).Build();
            var t1         = messageBus.InitializeRabbitMq("host=vboxguest.asinetwork.local;username=guest;password=guest");

            // Messages from local, with topic "send" are sent to rabbit
            var t2 = messageBus.Subscribe <MyTestPayload>(b => b
                                                          .WithTopic("send")
                                                          .ForwardToRabbitMq(r => r.UseDefaultQueue())
                                                          .OnWorker()
                                                          );

            messageBus.Subscribe <MyTestPayload>(b => b
                                                 .WithTopic("send")
                                                 .Invoke(s => Console.WriteLine("Sending: " + s.Text)));

            // Subscript to "send" topic on rabbit, and forward those messages locally on the "received" topic
            var t3 = messageBus.PullRabbitMqToLocal <MyTestPayload>(r => r
                                                                    .ForAllRemoteTopics()
                                                                    .ReceiveDefaultFormat()
                                                                    .ForwardToLocalTopic("received")
                                                                    .UseSharedQueueName()
                                                                    .AutoExpireQueue());

            // Messages from rabbit, with topic "received" get printed on the console
            var t4 = messageBus.Subscribe <MyTestPayload>(b => b
                                                          .WithTopic("received")
                                                          .InvokeEnvelope(m =>
            {
                Console.WriteLine("Received: " + m.Payload.Text);
            }));

            //Console.WriteLine("Sending message (should print 'whatever' if successful)");
            for (int i = 0; i < 100; i++)
            {
                messageBus.Publish("send", new MyTestPayload
                {
                    Text = "test message " + i
                });
                Thread.Sleep(1000);
            }

            Console.WriteLine("Press any key to continue");
            Console.ReadKey();
            messageBus.Dispose();
            Environment.Exit(0);
        }