Exemple #1
0
        static void Test3()
        {
            var user = new UserX
            {
                ID           = 1234,
                Name         = "Stone",
                DisplayName  = "大石头",
                RegisterTime = DateTime.Now,
                LastLogin    = DateTime.Now,
            };

            var js = user.ToJson(true);

            Console.WriteLine(js);
            Console.WriteLine("json={0}", js.GetBytes().Length);

            var pk = user.ToPacket();

            Console.WriteLine("binary={0}", pk.Total);
            Console.WriteLine(pk.ToHex());

            var user2 = pk.ToEntity <UserX>();
            var js2   = user2.ToJson(false);

            Console.WriteLine(js2);
        }
Exemple #2
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());
            }
        }