Ejemplo n.º 1
0
        static void Main(string[] args)
        {
            Console.Title = "订阅者";

            #region Redis
            //ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("localhost:6379");
            //redis.PreserveAsyncOrder = false;//为确保安全,消息的传递默认是有序的。为获得更好的性能强烈建议你使用并行操作
            //ISubscriber sub = redis.GetSubscriber();
            ////sub.Subscribe("messages", (channel, message) =>
            ////{
            ////    Console.WriteLine((string)message);
            ////});
            //IMessageBus messageBus = new RedisMessageBus(sub, "messages");
            //Console.WriteLine("订阅Channel:messages");
            //messageBus.Subscribe<string>((message) =>
            //{

            //    Console.WriteLine("收到广播消息:" + (string)message);

            //});
            #endregion

            #region RabbitMQ
            IMessageBus messageBus = new RabbitMQMessageBus(hostNmae: "localhost", userName: "******", password: "******", queueName: "NDQueue", routingKey: "NDQueueRoutingKey",
                                                            exhangeName: "NDExchange", durable: false, persistent: false, exclusive: false, autoDelete: false, queueArguments: null);
            Console.WriteLine("Subscriber....");
            messageBus.Subscribe <string>(msg => { Console.WriteLine(msg); });
            Console.ReadLine();
            #endregion
            Console.ReadKey();
        }
Ejemplo n.º 2
0
        public static void Main(string[] args)
        {
            IMessageBus messageBus = new RabbitMQMessageBus("guest", "guest", "FoundatioQueue", "FoundatioQueueRoutingKey", "FoundatioExchange", true, true, false, false, null, TimeSpan.FromMilliseconds(50));

            Console.WriteLine("Subscriber....");
            messageBus.Subscribe <string>(msg => { Console.WriteLine(msg); });
            Console.ReadLine();
        }
Ejemplo n.º 3
0
        public void Subscribe <T>(string name, Action <T> handler) where T : class
        {
            IMessageBus messageBus = new RabbitMQMessageBus(new RabbitMQMessageBusOptions {
                ConnectionString = "amqp://192.168.180.128", Topic = "aaa", ExchangeName = name
            });

            messageBus.SubscribeAsync <T>(handler);
        }
Ejemplo n.º 4
0
        public void Publish <T>(string name, T contentObj) where T : class
        {
            IMessageBus messageBus = new RabbitMQMessageBus(new RabbitMQMessageBusOptions {
                ConnectionString = "amqp://192.168.180.128", Topic = "aaa", ExchangeName = name
            });

            messageBus.PublishAsync <T>(contentObj);
        }
Ejemplo n.º 5
0
        public static void Main(string[] args)
        {
            IMessageBus messageBus = new RabbitMQMessageBus("amqp://localhost", "FoundatioQueue", "FoundatioQueueRoutingKey", "FoundatioExchange", defaultMessageTimeToLive: TimeSpan.FromMilliseconds(50));

            Console.WriteLine("Subscriber....");
            messageBus.Subscribe <string>(msg => { Console.WriteLine(msg); });
            Console.ReadLine();
        }
Ejemplo n.º 6
0
        public static void Main(string[] args)
        {
            Console.WriteLine("Waiting to receive messages....");

            IMessageBus messageBus = new RabbitMQMessageBus("amqp://localhost", "FoundatioQueue", "FoundatioExchange");

            messageBus.SubscribeAsync <string>(msg => { Console.WriteLine(msg); }).GetAwaiter().GetResult();
            Console.ReadLine();
        }
Ejemplo n.º 7
0
 public static void Main(string[] args) {
     IMessageBus messageBus = new RabbitMQMessageBus("guest", "guest", "FoundatioQueue", "FoundatioQueueRoutingKey", "FoundatioExchange", true, true, false, false, null, TimeSpan.FromMilliseconds(50));
     string input;
     Console.WriteLine("Publisher...");
     Console.WriteLine("Enter the messages to send (press CTRL+Z) to exit :");
     do {
         input = Console.ReadLine();
         messageBus.PublishAsync(input);
     } while (input != null);
     messageBus.Dispose();
 }
Ejemplo n.º 8
0
        public static void Main(string[] args)
        {
            IMessageBus messageBus = new RabbitMQMessageBus("amqp://localhost", "FoundatioQueue", "FoundatioQueueRoutingKey", "FoundatioExchange", defaultMessageTimeToLive: TimeSpan.FromMilliseconds(50));
            string      input;

            Console.WriteLine("Publisher...");
            Console.WriteLine("Enter the messages to send (press CTRL+Z) to exit :");
            do
            {
                input = Console.ReadLine();
                messageBus.PublishAsync(input);
            } while (input != null);
            messageBus.Dispose();
        }
Ejemplo n.º 9
0
        public static void Main(string[] args)
        {
            Console.WriteLine("Enter the message and press enter to send:");

            IMessageBus messageBus = new RabbitMQMessageBus("amqp://localhost", "FoundatioQueue", "FoundatioExchange");
            string      message;

            do
            {
                message = Console.ReadLine();
                messageBus.PublishAsync(message);
            } while (message != null);

            messageBus.Dispose();
        }
Ejemplo n.º 10
0
        public static async Task Main()
        {
            Console.WriteLine("Enter the message and press enter to send:");

            using var messageBus = new RabbitMQMessageBus(new RabbitMQMessageBusOptions { ConnectionString = "amqp://localhost:5672" });
            string message;

            do
            {
                message = Console.ReadLine();
                var delay = TimeSpan.FromSeconds(1);
                var body  = new MyMessage {
                    Hey = message
                };
                await messageBus.PublishAsync(body, delay);

                Console.WriteLine("Message sent. Enter new message or press enter to exit:");
            } while (!String.IsNullOrEmpty(message));
        }
Ejemplo n.º 11
0
        static void Main(string[] args)
        {
            Console.Title = "发布者";

            #region Redis
            //ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("localhost:6379");
            //redis.PreserveAsyncOrder = false;//为确保安全,消息的传递默认是有序的。为获得更好的性能强烈建议你使用并行操作
            //ISubscriber sub = redis.GetSubscriber();
            //IMessageBus messageBus = new RedisMessageBus(sub, "messages");
            //Console.WriteLine("发布Channle:messages");
            //while (true)
            //{
            //    Console.WriteLine("请输入要发布的消息");
            //    string r = Console.ReadLine();
            //    messageBus.PublishAsync("发布广播消息:" + r);
            //    Console.WriteLine("ok!");
            //}
            #endregion

            #region RabbitMQ
            IMessageBus messageBus = new RabbitMQMessageBus(hostNmae: "localhost", userName: "******", password: "******", queueName: "NDQueue", routingKey: "NDQueueRoutingKey",
                                                            exhangeName: "NDExchange", durable: false, persistent: false, exclusive: false, autoDelete: false, queueArguments: null);
            string input;
            Console.WriteLine("Publisher...");
            Console.WriteLine("Enter the messages to send (press CTRL+Z) to exit :");
            int index = 1;
            while (index < 11)
            {
                //input = Console.ReadLine();

                Console.WriteLine(index);

                messageBus.PublishAsync(DateTime.Now + ":" + index);
                index++;
            }
            Console.WriteLine("ok!");
            //messageBus.Dispose();
            #endregion
            Console.ReadKey();
        }
Ejemplo n.º 12
0
        public static async Task Main(string[] args)
        {
            Console.WriteLine("Waiting to receive messages, press enter to quit...");

            var tasks        = new List <Task>();
            var messageBuses = new List <IMessageBus>();

            for (int i = 0; i < 3; i++)
            {
                var messageBus = new RabbitMQMessageBus(new RabbitMQMessageBusOptions {
                    ConnectionString = "amqp://localhost:5672"
                });
                messageBuses.Add(messageBus);
                tasks.Add(messageBus.SubscribeAsync <MyMessage>(msg => { Console.WriteLine($"Got subscriber {messageBus.MessageBusId} message: {msg.Hey}"); }));
            }
            await Task.WhenAll(tasks);

            Console.ReadLine();
            foreach (var messageBus in messageBuses)
            {
                messageBus.Dispose();
            }
        }
Ejemplo n.º 13
0
 public static void Main(string[] args) {
     IMessageBus messageBus = new RabbitMQMessageBus("guest", "guest", "FoundatioQueue", "FoundatioQueueRoutingKey", "FoundatioExchange", true, true, false, false, null, TimeSpan.FromMilliseconds(50));
     Console.WriteLine("Subscriber....");
     messageBus.Subscribe<string>(msg => { Console.WriteLine(msg); });
     Console.ReadLine();
 }
Ejemplo n.º 14
0
        public async Task CanPersistAndNotLoseMessages()
        {
            Log.MinimumLevel = LogLevel.Trace;

            var messageBus1 = new RabbitMQMessageBus(o => o
                                                     .ConnectionString("amqp://localhost:5673")
                                                     .LoggerFactory(Log)
                                                     .SubscriptionQueueName($"{_topic}-offline")
                                                     .IsSubscriptionQueueExclusive(false)
                                                     .SubscriptionQueueAutoDelete(false)
                                                     .AcknowledgementStrategy(AcknowledgementStrategy.Automatic));

            var countdownEvent = new AsyncCountdownEvent(1);
            var cts            = new CancellationTokenSource();
            await messageBus1.SubscribeAsync <SimpleMessageA>(msg => {
                _logger.LogInformation("[Subscriber1] Got message: {Message}", msg.Data);
                countdownEvent.Signal();
            }, cts.Token);

            await messageBus1.PublishAsync(new SimpleMessageA { Data = "Audit message 1" });

            await countdownEvent.WaitAsync(TimeSpan.FromSeconds(5));

            Assert.Equal(0, countdownEvent.CurrentCount);
            cts.Cancel();

            await messageBus1.PublishAsync(new SimpleMessageA { Data = "Audit message 2" });

            cts = new CancellationTokenSource();
            countdownEvent.AddCount(1);
            await messageBus1.SubscribeAsync <SimpleMessageA>(msg => {
                _logger.LogInformation("[Subscriber2] Got message: {Message}", msg.Data);
                countdownEvent.Signal();
            }, cts.Token);

            await countdownEvent.WaitAsync(TimeSpan.FromSeconds(5));

            Assert.Equal(0, countdownEvent.CurrentCount);
            cts.Cancel();

            await messageBus1.PublishAsync(new SimpleMessageA { Data = "Audit offline message 1" });

            await messageBus1.PublishAsync(new SimpleMessageA { Data = "Audit offline message 2" });

            await messageBus1.PublishAsync(new SimpleMessageA { Data = "Audit offline message 3" });

            messageBus1.Dispose();

            var messageBus2 = new RabbitMQMessageBus(o => o
                                                     .ConnectionString("amqp://localhost:5673")
                                                     .LoggerFactory(Log)
                                                     .SubscriptionQueueName($"{_topic}-offline")
                                                     .IsSubscriptionQueueExclusive(false)
                                                     .SubscriptionQueueAutoDelete(false)
                                                     .AcknowledgementStrategy(AcknowledgementStrategy.Automatic));

            cts = new CancellationTokenSource();
            countdownEvent.AddCount(4);
            await messageBus2.SubscribeAsync <SimpleMessageA>(msg => {
                _logger.LogInformation("[Subscriber3] Got message: {Message}", msg.Data);
                countdownEvent.Signal();
            }, cts.Token);

            await messageBus2.PublishAsync(new SimpleMessageA { Data = "Another audit message 4" });

            await countdownEvent.WaitAsync(TimeSpan.FromSeconds(5));

            Assert.Equal(0, countdownEvent.CurrentCount);

            messageBus2.Dispose();
        }