Ejemplo n.º 1
0
        public void HandlerSubscribeTest()
        {
            IMetricsClient client = NSubstitute.Substitute.For <IMetricsClient>();

            IEventBus bus = new RabbitMQEventBus(new DATConfiguration(), client);

            MessageTest test = new MessageTest {
                Name = "Maikel"
            };

            bus.Publish("exchange.subscribe-test-handler", test);
            bus.Publish("exchange.subscribe-test-handler", test);
            bus.Publish("exchange.subscribe-test-handler", test);


            int index = 0;

            bus.Subscribe <MessageTest>("exchange.subscribe-test-handler", messageTest =>
            {
                Assert.Equal("Maikel", messageTest.Name);

                index++;

                return(true);
            });

            Thread.Sleep(500);

            Assert.Equal(3, index);
        }
Ejemplo n.º 2
0
        public void ObservableSubscribeTest()
        {
            IMetricsClient client = NSubstitute.Substitute.For <IMetricsClient>();

            IEventBus bus = new RabbitMQEventBus(new DATConfiguration(), client);

            MessageTest test = new MessageTest {
                Name = "Maikel"
            };

            bus.Publish("exchange.subscribe-test", test);
            bus.Publish("exchange.subscribe-test", test);
            bus.Publish("exchange.subscribe-test", test);


            IObservable <MessageTest> subscription = bus.Subscribe <MessageTest>("exchange.subscribe-test");


            subscription.Do(messageTest => Assert.Equal("Maikel", messageTest.Name)).Subscribe();
        }
Ejemplo n.º 3
0
        public void PublishTest()
        {
            IMetricsClient client = NSubstitute.Substitute.For <IMetricsClient>();

            IEventBus bus = new RabbitMQEventBus(new DATConfiguration(), client);

            MessageTest test = new MessageTest {
                Name = "Maikel"
            };

            bus.Publish("exchange.topic", test);
        }
Ejemplo n.º 4
0
        static void Main(string[] args)
        {
            var connectionFactory = new ConnectionFactory {
                HostName = "localhost"
            };
            var eventBus = new RabbitMQEventBus(connectionFactory, "EventBus.RabbitMQ.Events.Exchange", queueName: "EventBus.RabbitMQ.Events.Queue");

            var sendedEvent = new SendedEvent("优惠");

            Console.WriteLine($"商店发了{sendedEvent.Name}通知!");
            eventBus.Publish <SendedEvent>(sendedEvent);

            Console.ReadKey();
        }
Ejemplo n.º 5
0
        public void GetTest()
        {
            IMetricsClient client = NSubstitute.Substitute.For <IMetricsClient>();

            IEventBus bus = new RabbitMQEventBus(new DATConfiguration(), client);

            MessageTest test = new MessageTest {
                Name = "Maikel"
            };

            bus.Publish("exchange.topic-get", test);

            Option <MessageTest> returnMessage = bus.Get <MessageTest>("exchange.topic-get");

            Assert.True(returnMessage.HasValue);
            Assert.True(returnMessage.Exists(x => x.Name == "Maikel"));
        }
Ejemplo n.º 6
0
        static void Main(string[] args)
        {
            var connectionFactory = new ConnectionFactory {
                HostName = "localhost"
            };
            var eventBus = new RabbitMQEventBus(connectionFactory, "EventBus.RabbitMQ.ConsoleApp01.Exchange", queueName: "EventBus.RabbitMQ.ConsoleApp01.Queue");

            var sendedEvent = new SendedEvent("优惠");

            var customerASendedEventHandler = new CustomerASendedEventHandler();

            eventBus.Subscribe <SendedEvent>(customerASendedEventHandler);
            var customerBSendedEventHandler = new CustomerBSendedEventHandler();

            eventBus.Subscribe <SendedEvent>(customerBSendedEventHandler);
            Console.WriteLine($"商店发了{sendedEvent.Name}通知!");
            eventBus.Publish <SendedEvent>(sendedEvent);

            Console.ReadKey();
        }
Ejemplo n.º 7
0
        /// <summary>
        /// 测试ActvieMQ 消息发布与订阅
        /// </summary>
        /// <param name="isServer"></param>
        private static void TestEventBus(MQTypeEnum mqType, Boolean isServer = true)
        {
            Console.WriteLine("消息测试:1,消息发布;2,消息订阅");

            isServer = Console.ReadKey().KeyChar == '1';

            var       topic1 = "Topic.Test";
            var       topic2 = "Topic.Admin.User";
            IEventBus eventbus;

            switch (mqType)
            {
            case MQTypeEnum.ActiveMQ:
                eventbus = new ActiveMQEventBus();
                break;

            case MQTypeEnum.RabbitMQ:
                eventbus = new RabbitMQEventBus();
                break;

            default:
                eventbus = new RabbitMQEventBus();
                break;
            }
            Int64 userid = UserX.FindCount() + 1;

            TimerX timer;

            if (isServer)
            {
                timer = new TimerX((Object state) =>
                {
                    try
                    {
                        var time = DateTime.Now;
                        eventbus.Publish(topic1, new EventMessage()
                        {
                            Action = "Test",
                            Body   = "学无先后达者为师"
                        });
                        Console.WriteLine($"{time} 发送了一条消息,主题为:{topic1}");

                        // 实体消息测试
                        long tick = DateTime.Now.Ticks;
                        var rd    = new Random((Int32)(tick & 0xFFFFFFFFL) | (Int32)(tick >> 32));
                        var user  = new UserX()
                        {
                            Name        = "User" + rd.Next(),
                            DisplayName = $"{Enum.GetName(typeof(MQTypeEnum), eventbus.MQType)}_{userid++}",
                            Code        = userid.ToString().PadLeft(7, '0')
                        };
                        //user.SaveAsync(); // 向数据库中插入数据
                        eventbus.PublishAsync(topic2, new EventMessage()
                        {
                            Action = "Insert",
                            Body   = user.ToJson()
                        });
                    }
                    catch (Exception ex)
                    {
                        XTrace.WriteException(ex);
                        throw ex;
                    }
                }, null, 10, 10);
            }
            else
            {
                var handler = new EventBusHandler();
                eventbus.Subscribe(topic1, handler);

                eventbus.SubscribeAsync(topic2, new MyHandler());
            }
        }