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); }
/// <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()); } }