Example #1
0
        private void btnReceive_Click(object sender, EventArgs e)
        {
            MQHelper mqHelper = new MQHelper(@".\Private$\PosSyncCheckOver");

            _log.Info("消息队列接收开始");
            mqHelper.Receive <IndexJob>(MessageReceiveCallBack);
        }
        public void InitMessageRegister()
        {
            string   strRabbitMQconfig = _dbOption.RabbitMQconfig;
            MQHelper tMQHelper         = MQHelperFactory.CreateBus(strRabbitMQconfig);

            #region 模拟第三方消息发送
            //Task.Factory.StartNew(() =>
            //{
            //    while (true)
            //    {
            //        chatHub.Clients.All.SendAsync("Notify", $" {DateTime.Now}:->{new Random().Next(1, 10000)}");
            //        Task.Delay(5000);
            //    }
            //});
            int    i           = 0;
            string strErrorMsg = "";
            Task.Factory.StartNew(() =>
            {
                while (true)
                {
                    i++;
                    var bodyMsg = new SystemMessage()
                    {
                        Content  = $"定时第{i}条信息",
                        DateTime = DateTime.Now.ToString(),
                        Title    = "四方博瑞安防平台信息",
                        Type     = "log".ObjectToJSON()
                    };
                    var message = new RabbitMQMsg {
                        Body = bodyMsg.ObjectToJSON(), Category = CategoryMessage.System, Dst = "预留字段", SendTime = DateTime.Now.ToString(), Src = "消息来源"
                    };

                    tMQHelper.TopicPublish(message.Category.ToString() + ".xA", message, ref strErrorMsg);
                    Task.Delay(5000);
                }
                ;
            });
            #endregion

            #region 通过signar发送到客户端
            tMQHelper.TopicSubscribe(Guid.NewGuid().ToString(), s =>
            {
                Console.WriteLine("当前收到信息:" + s.Body.FromJson <SystemMessage>().Content);


                foreach (var connection in ChatHub.UserList)
                {
                    if (_chatHub != null && connection.Key != null)
                    {
                        _chatHub.Clients.Client(connection.Key).SendAsync("Recv", "当前收到信息:" + s.Body.FromJson <SystemMessage>().Content);
                    }
                }
                // chatHub.Clients.All.SendAsync("Notify", $" {DateTime.Now}:->{new Random().Next(1, 10000)}");
            }, true, CategoryMessage.System.ToString() + ".*", CategoryMessage.Alarm.ToString() + ".*");
            #endregion
        }
        private void FilterReceive(int primaryKey)
        {
            OrderProcessMessage order = new OrderProcessMessage();
            MyMessage           msg   = new MyMessage();

            msg.MessageID     = "1";
            msg.MessageRouter = "Filter_Result";

            MQHelper.Subscribe(msg, order);
        }
Example #4
0
        /// <summary>
        /// 启动应用程序
        /// </summary>
        private async Task LaunchApplication()
        => await Task.WhenAll(
            Task.Delay(1000),
            Task.Factory.StartNew(() =>
        {
            this.UpdateProgressAsync("开始初始化 AutoMap ...");
            this.InitAutoMap();

            this.UpdateProgressAsync("开始注册服务到依赖注入容器 ...");
            DIContainerHelper.RegistServicesFromConfig();

            this.UpdateProgressAsync("创建主窗口 ...");
            MainForm mainForm = (MainForm)this.Invoke(new Func <MainForm>(() => new MainForm()));
            DIContainerHelper.RegisteInstanceAsType <MainForm, MainForm>(mainForm);
            foreach (var message in mainForm.Initialize())
            {
                this.UpdateProgressAsync(message);
            }

            this.UpdateProgressAsync("注册自选股票窗口 ...");
            this.RegisterSingleToolDockFormInstance <SelfSelectStockForm>(mainForm);

            this.UpdateProgressAsync("注册热门股票窗口 ...");
            this.RegisterSingleToolDockFormInstance <HotStockDockForm>(mainForm);

            this.UpdateProgressAsync("注册搜索股票窗口 ...");
            this.RegisterSingleToolDockFormInstance <SearchStockDockForm>(mainForm);

            this.UpdateProgressAsync("注册图表文档窗口 ...");
            this.RegisterDocumentDockForm <ChartDocumentForm>();

            this.UpdateProgressAsync("注册最近行情窗口 ...");
            this.RegisterDocumentDockForm <RecentQuotaDocumentForm>();

            this.UpdateProgressAsync("注册行情仓库窗口 ...");
            this.RegisterDocumentDockForm <QuotaRepositoryDocumentForm>();

            this.UpdateProgressAsync("注册实时行情窗口 ...");
            this.RegisterSingleToolDockFormInstance <CurrentQuotaForm>(mainForm);

            this.UpdateProgressAsync("注册大盘指数窗口 ...");
            this.RegisterSingleToolDockFormInstance <MarketQuotaForm>(mainForm);

            this.UpdateProgressAsync("注册公司信息窗口 ...");
            this.RegisterSingleToolDockFormInstance <CompanyInfoForm>(mainForm);

            this.UpdateProgressAsync("注册最近交易窗口 ...");
            this.RegisterSingleToolDockFormInstance <RecentTradeForm>(mainForm);

            this.UpdateProgressAsync($"密封服务容器 ...");
            DIContainerHelper.Build();

            this.UpdateProgressAsync($"绑定 MQ 发布者 ...");
            MQHelper.BindPublisher();
        }));
Example #5
0
        protected void Button1_Click(object sender, EventArgs e)
        {
            MessageInfo msg = new MessageInfo();

            msg.MessageID     = "1";
            msg.MessageBody   = "Msg " + DateTime.Now.ToString();
            msg.MessageTitle  = "1";
            msg.MessageRouter = "order.notice.lisi";

            MQHelper.Publish(msg);
        }
Example #6
0
        public void MQHelperUnitTests()
        {
            int counter = 0;

            Console.WriteLine("绑定发布者 ...");
            MQHelper.BindPublisher();

            Console.WriteLine("订阅主题 ...");
            var handler = MQHelper.Subscribe("测试订阅者", new[] { "1" }, (source, topic, message) =>
            {
                counter++;
                Console.WriteLine($"收到 {source} 发来的消息:{topic} - {message}");
            });

            // 发布者和订阅者任何一端断开或重连,另一端不需要任何操作,可以继续收发
            MQHelper.Publish("测试发布者", "1.1", "股票打新咯!!!-1");

            MQHelper.DisconnectPublisher();
            Thread.Sleep(100);
            MQHelper.Publish("测试发布者", "1.2", "股票打新咯!!!-2");
            Thread.Sleep(100);

            MQHelper.BindPublisher();
            Thread.Sleep(100);
            MQHelper.Publish("测试发布者", "1.3", "股票打新咯!!!-3");
            Thread.Sleep(100);

            handler.Disconnect();
            Thread.Sleep(100);
            MQHelper.Publish("测试发布者", "1.4", "股票打新咯!!!-4");
            Thread.Sleep(100);

            Thread.Sleep(100);
            handler.Connect();
            Thread.Sleep(100);
            MQHelper.Publish("测试发布者", "1.5", "股票打新咯!!!-5");

            // 自动过滤自己发布的消息,避免消息循环
            Thread.Sleep(100);
            MQHelper.Publish("测试订阅者", "1.6", "股票打新咯!!!-6");
            Thread.Sleep(100);

            // 释放订阅者
            handler.Dispose();

            Thread.Sleep(100);
            MQHelper.Publish("测试订阅者", "1.7", "股票打新咯!!!-7");

            Console.WriteLine($"测试结束,计数器: {counter}");

            // 仅收到 1、3、5 消息即为正常
            Assert.AreEqual(3, counter);
        }
Example #7
0
        public void SendMsg()
        {
            string   label    = "PosSyncCheckOver";
            MQHelper orderJob = new MQHelper(string.Format(@".\Private$\{0}", "PosSyncCheckOver"));

            MessageQueueSend.IndexJob job1 = new MessageQueueSend.IndexJob();
            job1.Obj = "11,22";
            orderJob.Send(job1);//把任务加入消息队列

            MessageQueueSend.IndexJob job2 = new MessageQueueSend.IndexJob();
            job2.Obj = "22,33";
            orderJob.Send(job2);//把任务加入消息队列
        }
        public ActionResult Index()
        {
            Message msg = new Message()
            {
                MessageID     = 1.ToString(),
                MessageBody   = DateTime.Now.ToString(),
                MessageRouter = "testKey", //在127.0.0.1:15672上定义好的Exchanges
                MessageTitle  = "测试"
            };

            MQHelper.Publish(msg);

            return(View());
        }
Example #9
0
        private void button1_Click(object sender, EventArgs e)
        {
            UserInfo u = new UserInfo();
            u.UserID = index++;
            u.UserName = "******" + textBox1.Text + index;
            MQHelper.SendMessage(u, typeof(UserInfo), MsgTypeEnum.UserMsg);



            LogInfo l = new LogInfo();
            l.LogID = index;
            l.LogName = "日志" + textBox1.Text + index;
            MQHelper.SendMessage(l, typeof(LogInfo), MsgTypeEnum.LogMsg);
        }
Example #10
0
        static void Main(string[] args)
        {
            OrderProcessMessage order = new OrderProcessMessage();
            Message             msg   = new Message();

            msg.MessageID     = 1.ToString();
            msg.MessageRouter = "testKey";

            MQHelper.Subscribe(msg, order);

            //MQHelper.SubscribeAsync(msg, order);

            Console.WriteLine("成功了!");
        }
Example #11
0
        public static void Main(string[] args)
        {
            string input       = "";
            string strErrorMsg = "";

            Console.WriteLine("请输入你要选择的发送端和接收端==1为发,2为收");
            string type    = Console.ReadLine();
            string connStr = System.Configuration.ConfigurationManager.AppSettings["connStr"] ?? "host=192.168.137.112:5672;virtualHost=/;username=lxsh;password=123456";

            Console.WriteLine(connStr);
            MQHelper tMQHelper = MQHelperFactory.CreateBus(connStr);

            if (type == "1")
            {
                Console.WriteLine("================================开始发送消息================================");
                Console.WriteLine("Please enter a message. 'Quit' to quit.");
                int i = 0;

                //while ((input = Console.ReadLine()) != "Quit")
                while (true)
                {
                    Thread.Sleep(1000);
                    i++;
                    var bodyMsg = new SystemMessage()
                    {
                        // Content = $"第{i}条信息:{ input}",
                        Content  = $"定时第{i}条信息",
                        DateTime = DateTime.Now.ToString(),
                        Title    = "四方博瑞安防平台信息",
                        Type     = "log".ToJson()
                    };
                    var message = new RabbitMQMsg {
                        Body = bodyMsg.ToJson(), EventCategory = CategoryMessage.System, EventDst = "预留字段", EventSendTime = DateTime.Now.ToString(), SourceName = "消息来源"
                    };

                    tMQHelper.TopicPublish(message.EventCategory.ToString() + ".xA", message, ref strErrorMsg);

                    Console.WriteLine(message.Body);
                    Console.WriteLine("================================发送消息完成================================");
                }
            }
            else
            {
                tMQHelper.TopicSubscribe(Guid.NewGuid().ToString(), s => Console.WriteLine("当前收到信息:" + s.Body.FromJson <SystemMessage>().Content), true, CategoryMessage.System.ToString() + ".*", CategoryMessage.Alarm.ToString() + ".*");
                Console.WriteLine("Please enter a message. 'Quit' to quit.");
            }
        }
Example #12
0
        /// <summary>
        /// /// <summary>
        /// EasyNetQ封装方法
        /// </summary>
        /// </summary>
        public static void EasyNetQConsumer()
        {
            try
            {
                ProcessMessage order = new ProcessMessage();

                Message msg = new Message();
                msg.MessageID     = "1";
                msg.MessageRouter = "llj";

                MQHelper.Subscribe(msg, order);
            }
            catch (EasyNetQException ex)
            {
                //处理连接消息服务器异常
                // MessageHelper.WriteFuntionExceptionLog("Publish", ex.Message + " | " + ex.StackTrace);
            }
        }
Example #13
0
        static void Main(string[] args)
        {
            for (int i = 0; i < 100; i++)
            {
                UserInfo u = new UserInfo();
                u.UserID   = i;
                u.UserName = "******" + i;
                MQHelper.SendMessage(u, typeof(UserInfo), MsgTypeEnum.UserMsg);
            }

            for (int i = 0; i < 100; i++)
            {
                LogInfo u = new LogInfo();
                u.LogID   = i;
                u.LogName = "姓名" + i;
                MQHelper.SendMessage(u, typeof(LogInfo), MsgTypeEnum.LogMsg);
            }
            Console.WriteLine("完毕");
            Console.ReadLine();
        }
Example #14
0
        //入组执行发送
        private void FilterSend(string url, int primaryKey)
        {
            //DateTime minTime = _ingroupService.GetMinAndMaxTime().Item1;
            DateTime maxTime = _ingroupService.GetMinAndMaxTime().Item2.AddDays(1);
            DateTime minTime = Convert.ToDateTime("2017-04-05");

            for (DateTime dt = minTime; dt <= maxTime; dt = dt.AddDays(60))
            {
                var starTime = dt;
                var endTime  = dt.AddDays(60) < maxTime?dt.AddDays(60) : maxTime;

                string message = string.Format("{0}?dateBegin={1}&dateEnd={2}&patientNo={3}", url, starTime, endTime);
                //var body = Encoding.UTF8.GetBytes(message);

                MyMessage msg = new MyMessage();
                msg.MessageID     = "1";
                msg.MessageRouter = "Filter_Condition";
                msg.MessageBody   = message;
                MQHelper.Publish(msg);
            }
        }
Example #15
0
        static void RabbitMsgTest()
        {
            MQHelper tMQHelper = MQHelperFactory.CreateBus("host=127.0.0.1:5672;virtualHost=/;username=lxsh;password=123456");

            tMQHelper.TopicSubscribe(Guid.NewGuid().ToString(), s =>
            {
                Console.WriteLine("当前收到信息:" + s.Body.FromJson <SystemMessage>().Content);

                var hub = GlobalHost.ConnectionManager.GetHubContext <MyConnection>();
                foreach (var connectionID in MyConnection.list)
                {
                    if (hub != null && connectionID != null)
                    {
                        hub.Clients.Client(connectionID)
                        .notice("当前收到信息:" + s.Body.FromJson <SystemMessage>().Content);
                    }
                }
            }, true, CategoryMessage.System.ToString() + ".*", CategoryMessage.Alarm.ToString() + ".*");

            Console.WriteLine("Please enter a message. 'Quit' to quit.");
        }
Example #16
0
        /// <summary>
        ///     Write Message to Local Queue
        /// </summary>
        /// <param name="input">Text Message</param>
        /// <returns></returns>
        public void Send(string input)
        {
            try
            {
                _queue        = _queueManager.AccessQueue(_sendQueueName, MQC.MQOO_OUTPUT + MQC.MQOO_FAIL_IF_QUIESCING);
                _message      = MQHelper.Encode(input);
                _queueMessage = new MQMessage();
                _queueMessage.WriteString(_message);
                _queueMessage.Format    = MQC.MQFMT_STRING;
                _queuePutMessageOptions = new MQPutMessageOptions();
                _queue.Put(_queueMessage, _queuePutMessageOptions);

                ResultMessage = "Message sent to the queue successfully";
                IsSuccess     = true;
            }
            catch (Exception exp)
            {
                ResultMessage = "Exception: " + exp.Message;
                IsSuccess     = false;
            }
        }
Example #17
0
        /// <summary>
        /// EasyNetQ封装方法
        /// </summary>
        public static void EasyNetQProducer()
        {
            try
            {
                while (true)
                {
                    var value = Console.ReadLine();

                    Message msg = new Message();
                    msg.MessageID     = "1";
                    msg.MessageBody   = DateTime.Now.ToString() + ":" + value;
                    msg.MessageTitle  = "1";
                    msg.MessageRouter = "llj";
                    MQHelper.Publish(msg);
                }
            }
            catch (EasyNetQException ex)
            {
                //处理连接消息服务器异常
                // MessageHelper.WriteFuntionExceptionLog("Publish", ex.Message + " | " + ex.StackTrace);
            }
        }
Example #18
0
        /// <summary>
        ///     Read Message from Local Queue
        /// </summary>
        /// <returns>Text Message</returns>
        public void Receive()
        {
            try
            {
                _queue        = _queueManager.AccessQueue(_receiveQueueName, MQC.MQOO_INPUT_AS_Q_DEF + MQC.MQOO_FAIL_IF_QUIESCING);
                _queueMessage = new MQMessage
                {
                    Format = MQC.MQFMT_STRING
                };
                _queueGetMessageOptions = new MQGetMessageOptions();
                _queue.Get(_queueMessage, _queueGetMessageOptions);
                _message = _queueMessage.ReadString(_queueMessage.MessageLength);

                ResultMessage = MQHelper.Decode(_message);
                IsSuccess     = true;
            }
            catch (Exception exp)
            {
                ResultMessage = "Exception: " + exp.Message;
                IsSuccess     = false;
            }
        }
Example #19
0
 public void ErrorHandle(Func <dynamic, Exception, Type, Task> func)
 {
     MQHelper.ErrorHandle(func);
 }
Example #20
0
        /// <summary>
        /// 同步发送消息,如果mq队列存在问题会一直等待。
        /// </summary>
        /// <param name=""></param>
        /// <param name=""></param>
        public void sendMessage(Object message)
        {
            MQHelper mqhelper = MQHelper.getInstance(SystemInfo.getConfig(SystemInfo.SHOP_CODE).ToString(), SystemInfo.getConfig(SystemInfo.POS_CODE).ToString(), SystemInfo.getConfig(SystemInfo.MQ_ADDRESS).ToString(), SystemInfo.getConfig(SystemInfo.ORDER_QUEUE).ToString());

            mqhelper.sendMessage(JsonConvert.SerializeObject(message));
        }
Example #21
0
        static void Main(string[] args)
        {
            var     cfg = File.ReadAllText(Path.Combine(Environment.CurrentDirectory, "config.json"));
            JObject jo  = (JObject)JsonConvert.DeserializeObject(cfg);

            var ip                 = CodeHelper.GetIP(jo["IP"].ToString());
            var port               = jo["PORT"].ToString();
            var pwd                = TokenHelper.Md5(jo["PASSWORD"].ToString());
            var numberOfRuns       = Convert.ToInt32(jo["NUMBEROFRUNS"].ToString()); // 最大运行次数
            var accountFile        = jo["ACCOUNTFILE"].ToString();
            var accountDetailFile  = jo["ACCOUNTDETAILFILE"].ToString();
            var timeTableId        = jo["TIMETABLEID"].ToString();
            var classId            = jo["CLASSID"].ToString();
            var accounts           = File.ReadAllLines(Path.Combine(Environment.CurrentDirectory, accountFile));
            var teachingPlanId     = jo["TEACHINGPLANID"].ToString();
            var resourceId         = jo["RESOURCEID"].ToString();
            var mqIp               = jo["MQIP"].ToString();
            var mqPort             = jo["MQPORT"].ToString();
            var mqUserName         = jo["MQUSERNAME"].ToString();
            var mqPassword         = jo["MQPASSWORD"].ToString();
            var serverExchangeName = jo["SERVEREXCHANGENAME"].ToString();

            //var maxDegreeOfParallelism = Convert.ToInt32(jo["CONCURRENT"].ToString());
            MQHelper.CreateMqConnection(mqIp, mqPort, mqUserName, mqPassword);
            ConcurrentDictionary <string, string> cd = new ConcurrentDictionary <string, string>();
            BlockingCollection <MData>            bc = new BlockingCollection <MData>();

            // 装置 AccountId 与 Account 的关系
            var accountDetails = File.ReadAllLines(Path.Combine(Environment.CurrentDirectory, accountDetailFile));

            foreach (var item in accountDetails)
            {
                var arr = item.Split('\t');
                cd.TryAdd(arr[1], arr[0]);
            }

            var r = new Random((int)DateTime.Now.ToFileTimeUtc());
            var accountIndexArray = new int[numberOfRuns];

            for (var i = 0; i < numberOfRuns; i++)
            {
                accountIndexArray[i] = r.Next(0, accounts.Length - 1);
            }

            var taskList      = new Task[numberOfRuns];
            var startDateTime = $"[{ DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fff")}]";

            for (var i = 0; i < numberOfRuns; i++)
            {
                int k = i;
                taskList[i] = new Task(() =>
                {
                    var account = string.Empty;
                    account     = accounts[accountIndexArray[k]];
                    var url     = $"http://{ip}:{port}/oauth2/login.html?client_id=1&response_type=code&username={account}&password={pwd}";
                    SocketHttpHelper.SocketHttpPost(ip, port, url, out string status, out string data);
                    LogHelper.OutputDebugString($"[{k}]{status}, {data}");

                    if (status == SocketHttpHelper.HttpState.S200)
                    {
                        JObject __jo = JsonConvert.DeserializeObject <JObject>(data);
                        try
                        {
                            var t = __jo["code"].ToString() + __jo["state"].ToString();

                            var code             = __jo["code"].ToString(); // 取得CODE
                            var state            = __jo["state"].ToString();
                            string client_secret = "111";
                            string baseUrl       = "http://" + ip + ":" + port;
                            string tokenUrl      = baseUrl + "/oauth2/token";
                            string redirect_uri  = baseUrl + "/oauth2/getToken.do";
                            var refreshToken     = string.Empty;

                            var body = $"grant_type=authorization_code&client_id=1&client_secret={client_secret}&refresh_token={refreshToken}&username={account}&redirect_uri={redirect_uri.Replace("&", "%26%")}&code={code}&state={state}";
                            SocketHttpHelper.SocketHttpPost(ip, port, tokenUrl, body, out status, out data);
                            LogHelper.OutputDebugString($"[{k}]{status}, {data}");

                            // 保存有效数据,用于之后的并发测试
                            if (status == SocketHttpHelper.HttpState.S200)
                            {
                                var joAccessToken = JsonConvert.DeserializeObject <JObject>(data);
                                var accessToken   = joAccessToken["access_token"].ToString();
                                refreshToken      = joAccessToken["refresh_token"].ToString();
                                bc.Add(new MData
                                {
                                    AccessToken  = accessToken,
                                    RefreshToken = refreshToken,
                                    Code         = code,
                                    State        = state,
                                    Account      = account,
                                    AccountId    = cd[account],
                                    ClassId      = classId,
                                    TimeTableId  = timeTableId
                                });
                            }
                        }
                        catch { }
                    }
                });
            }

            Console.WriteLine($"[{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fff")}]开始获取Code、AccessToken...");
            taskList.ToList().ForEach(a => a.Start());
            //Parallel.For(0, taskList.Length, new ParallelOptions { MaxDegreeOfParallelism = maxDegreeOfParallelism }, i => { taskList[i].Start(); });

            Task.WaitAll(taskList, 1000 * 60 * 10); // 最长等待10分钟
#if true
            #region 并发测试MQ(考勤)
            var bcTaskList   = bc.ToList();
            var mqKaoQinTask = new Task[bcTaskList.Count];

            for (var i = 0; i < bcTaskList.Count; i++)
            {
                var k = i;
                mqKaoQinTask[i] = new Task(() => {
                    var a    = bcTaskList[k];
                    var jObj = new JObject();
                    jObj.Add(new JProperty("studentAccountId", a.AccountId));
                    jObj.Add(new JProperty("timeTableId", a.TimeTableId));
                    jObj.Add(new JProperty("wifiName", "Wifi-liuzhenhua"));
                    jObj.Add(new JProperty("checkWorkStatus", "2"));
                    jObj.Add(new JProperty("checkWorkTime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")));
                    jObj.Add(new JProperty("classId", a.ClassId));
                    jObj.Add(new JProperty("tocken", a.AccessToken));
                    var jsonPostData = jObj.ToString();
                    LogHelper.OutputDebugString($"MQ::{jsonPostData}");
                    MQHelper.sentMsgToMQqueue("checkwork", jsonPostData);
                });
            }
            ;
            Console.WriteLine($"[{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fff")}]开始并发测试MQ(考勤)...");
            mqKaoQinTask.ToList().ForEach(a => a.Start());
            //Parallel.For(0, mqKaoQinTask.Length, new ParallelOptions { MaxDegreeOfParallelism = maxDegreeOfParallelism }, i => { mqKaoQinTask[i].Start(); });

            Task.WaitAll(mqKaoQinTask, 1000 * 60 * 5); // 最长等待5分钟
            #endregion

            #region 并发测试MQ(举手发言)
            var mqJuShouFaYanTask = new Task[bcTaskList.Count];
            for (var i = 0; i < bcTaskList.Count; i++)
            {
                var k = i;
                mqJuShouFaYanTask[i] = new Task(() => {
                    var a    = bcTaskList[k];
                    var jObj = new JObject();

                    jObj.Add(new JProperty("Course_ID", teachingPlanId));
                    jObj.Add(new JProperty("Time_Table_ID", a.TimeTableId));
                    jObj.Add(new JProperty("Account_ID", a.AccountId));
                    jObj.Add(new JProperty("accessToken", a.AccessToken));

                    var jsonPostData = jObj.ToString();
                    LogHelper.OutputDebugString($"MQ::{jsonPostData}");
                    MQHelper.sentMsgToMQqueue("student_speak", jObj.ToString());
                });
            }
            ;
            Console.WriteLine($"[{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fff")}]开始并发测试MQ(举手发言)...");
            mqJuShouFaYanTask.ToList().ForEach(a => a.Start());
            //Parallel.For(0, mqJuShouFaYanTask.Length, new ParallelOptions { MaxDegreeOfParallelism = maxDegreeOfParallelism }, i => { mqJuShouFaYanTask[i].Start(); });

            Task.WaitAll(mqJuShouFaYanTask, 1000 * 60 * 5); // 最长等待5分钟
            #endregion

            #region 并发测试MQ(回答问题)
            var mqHuiDaWenTiTask = new Task[bcTaskList.Count];
            for (var i = 0; i < bcTaskList.Count; i++)
            {
                var k = i;
                mqHuiDaWenTiTask[i] = new Task(() => {
                    var a    = bcTaskList[k];
                    var jObj = new JObject();

                    jObj.Add(new JProperty("Time_Table_ID", a.TimeTableId));
                    jObj.Add(new JProperty("Resource_ID", resourceId));
                    jObj.Add(new JProperty("Course_ID", teachingPlanId));
                    jObj.Add(new JProperty("Account_ID", a.AccountId));
                    jObj.Add(new JProperty("Answer_Time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")));
                    jObj.Add(new JProperty("type", "1"));
                    jObj.Add(new JProperty("accessToken", a.AccessToken));

                    var jsonPostData = jObj.ToString();
                    LogHelper.OutputDebugString($"MQ::{jsonPostData}");
                    string routingKey = "tea.question.courseId." + a.TimeTableId;
                    MQHelper.sentMsgToMQ(routingKey, jsonPostData, serverExchangeName);
                });
            }
            ;
            Console.WriteLine($"[{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fff")}]开始并发测试MQ(回答问题)...");
            mqHuiDaWenTiTask.ToList().ForEach(a => a.Start());
            //Parallel.For(0, mqHuiDaWenTiTask.Length, new ParallelOptions { MaxDegreeOfParallelism = maxDegreeOfParallelism }, i => { mqHuiDaWenTiTask[i].Start(); });

            Task.WaitAll(mqHuiDaWenTiTask, 1000 * 60 * 5); // 最长等待5分钟
            #endregion
#endif
            var s = $"Run from {startDateTime} to [{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fff")}], 总运行次数:{numberOfRuns}. All of task finished. Press enter to exit.";
            LogHelper.OutputDebugString(s);
            Console.WriteLine(s);
            Console.ReadLine();
            Environment.Exit(0);
        }
        static void Main(string[] args)
        {
            var     cfg = File.ReadAllText(Path.Combine(Environment.CurrentDirectory, "config.json"));
            JObject jo  = (JObject)JsonConvert.DeserializeObject(cfg);

            LogHelper.StartService();
            var accountIds  = RemoveEmptyLines(File.ReadAllLines(Path.Combine(Environment.CurrentDirectory, "accountId.txt")));
            var resourceIds = ParseResourceLines(RemoveEmptyLines(File.ReadAllLines(Path.Combine(Environment.CurrentDirectory, "resourceId.txt"))));
            var mqIp        = GetIP(jo["MQIP"].ToString());
            var mqPort      = jo["MQPORT"].ToString();
            var mqUserName  = jo["MQUSERNAME"].ToString();
            var mqPassword  = jo["MQPASSWORD"].ToString();
            var timeTableId = jo["TIMETABLEID"].ToString();
            var courseId    = jo["COURSEID"].ToString();

            var detailIds = RemoveEmptyLines(File.ReadAllLines(Path.Combine(Environment.CurrentDirectory, "detailIds.txt")));


            var connection = MQHelper.CreateMqConnection(mqIp, mqPort, mqUserName, mqPassword);

            IModel channel = connection.CreateModel();

            // 生成随机队列名称
            var queueName = channel.QueueDeclare().QueueName;

            var len     = accountIds.Length * resourceIds.Length; // 最大并发度
            var lstTask = new Task[len];
            var index   = 0;

            for (var m = 0; m < accountIds.Length; m++)
            {
                var aIndex = m;
                for (var n = 0; n < resourceIds.Length; n++)
                {
                    int k      = index;
                    int rIndex = n;
                    lstTask[k] = new Task(() =>
                    {
                        var j = new JObject();

                        var resource_detailIds = new string[detailIds.Length];//detailIds;
                        for (var c = 0; c < detailIds.Length; c++)
                        {
                            var h = c;
                            resource_detailIds[h] = detailIds[h];
                        }
                        var jArray = new JArray();
                        for (var i = 0; i < resource_detailIds.Length; i++)
                        {
                            var jItem = new JObject();
                            var w     = i;
                            jItem["Publish_Details_ID"] = resource_detailIds[w];// resourceIds[rIndex].ResourceDetailId;
                            jItem["StudentAnswer"]      = "B";
                            jItem["RightOrWrong"]       = 0;
                            jItem["Sort"] = w + 1;
                            jArray.Add(jItem);
                        }

                        j["AnswerList"]    = jArray;
                        j["ErrorNo"]       = "1";
                        j["Time_Table_ID"] = timeTableId; // "a9731c294ac7405dab551e69e93d6941";
                        j["Resource_ID"]   = resourceIds[rIndex].ResourceId;
                        j["Course_ID"]     = courseId;
                        j["Account_ID"]    = accountIds[aIndex];
                        j["Answer_Time"]   = "2020-4-8 16:41:07";
                        j["type"]          = "1";
                        j["accessToken"]   = "921a71d35fd7ea9aaa8c75185907d299";

                        var jsonPostData = j.ToString();
                        //LogHelper.OutputDebugString($"MQ::{jsonPostData}");
                        string routingKey      = "tea.question.courseId." + j["Time_Table_ID"].ToString();
                        var serverExchangeName = "server-topic-exchange";
                        //MQHelper.sentMsgToMQ(routingKey, channel, queueName, jsonPostData, serverExchangeName);
                        MQHelper.sentMsgToMQ(routingKey, jsonPostData, serverExchangeName);
                    });
                    index++;
                }
            }
            var ss = $"[{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fff")}]Start.";

            LogHelper.Trace(ss);
            Console.WriteLine(ss);
            for (var i = 0; i < len; i++)
            {
                lstTask[i].Start();
            }
            Task.WaitAll(lstTask);

            var s = $"[{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fff")}]Task finished. Total send mq={len}";

            LogHelper.Trace(s);
            Console.WriteLine(s);
            Console.ReadLine();
        }
Example #23
0
        public static async void ReceiveMsg(IEventAggregator aggregator)
        {
            eventAggregator = aggregator;

            MQHelper.ConnectionString = ConfigurationManager.ConnectionStrings["RabbitMQ"].ConnectionString;
            _mqHelper = new MQHelper();
            _mqHelper.ClientSubscriptionId = ConfigurationManager.ConnectionStrings["ClientName"].ConnectionString + "-" +
                ConfigurationManager.ConnectionStrings["User"].ConnectionString;
            _mqHelper.MessageArrived += RabbitMQ_MessageArrived;
            _mqHelper.Topics.Add("DSIM.Command.Update");
            _mqHelper.Topics.Add("DSIM.Command.Approve");
            _mqHelper.Topics.Add("DSIM.Command.Transmit");
            _mqHelper.Topics.Add("DSIM.Command.Sign");
            _mqHelper.Topics.Add("DSIM.Command.AgentSign");
            _mqHelper.Topics.Add("DSIM.Command.Check");
            _mqHelper.Topics.Add("DSIM.Command.SpeedCache");
            _mqHelper.Topics.Add("DSIM.Command.Active");
            _mqHelper.Topics.Add("DSIM.Command.Execute");
            _mqHelper.Subcribe();

            // 以下为测试代码
            //try
            //{
            //    ConnectionFactory factory = new ConnectionFactory { HostName = "39.108.177.237", Port = 5672, UserName = "******", Password = "******" };
            //    using (IConnection conn = factory.CreateConnection())
            //    {
            //        using (IModel im = conn.CreateModel())
            //        {
            //            List<string> allTopic = new List<string>()
            //            {
            //            "DSIM.Command.Update",
            //            "DSIM.Command.Approve",
            //            "DSIM.Command.Transmit",
            //            "DSIM.Command.Sign",
            //            "DSIM.Command.AgentSign",
            //            "DSIM.Command.Check",
            //            "DSIM.Command.SpeedCache",
            //            "DSIM.Command.Active",
            //            "DSIM.Command.Execute",};

            //            var queue = ConfigurationManager.ConnectionStrings["User"].ConnectionString;

            //            im.ExchangeDeclare("amq.topic", ExchangeType.Topic, durable: true);
            //            im.QueueDeclare(queue);
            //            foreach (var item in allTopic)
            //            {
            //                im.QueueBind(queue, "amq.topic", item);
            //            }

            //            await Task.Run(() =>
            //            {
            //                while (true)
            //                {
            //                    BasicGetResult res = im.BasicGet(queue, true);
            //                    if (res != null)
            //                    {
            //                        var json = Encoding.UTF8.GetString(res.Body);

            //                        var split = json.LastIndexOf("/");
            //                        var suffix = json.Substring(split + 1);
            //                        var content = json.Substring(0, split);

            //                        switch (suffix)
            //                        {
            //                            case ("DSIM.Command.Update"):
            //                                var data1 = JsonConvert.DeserializeObject<YDMSG.MsgDispatchCommand>(content);
            //                                eventAggregator.GetEvent<CacheCommand>().Publish(data1);
            //                                break;
            //                            case ("DSIM.Command.Approve"):
            //                                var data2 = JsonConvert.DeserializeObject<YDMSG.MsgDispatchCommand>(content);
            //                                eventAggregator.GetEvent<ApproveCommand>().Publish(data2);
            //                                break;
            //                            case ("DSIM.Command.Transmit"):
            //                                var data3 = JsonConvert.DeserializeObject<YDMSG.MsgDispatchCommand>(content);
            //                                eventAggregator.GetEvent<TransmitCommand>().Publish(data3);
            //                                break;
            //                            case ("DSIM.Command.Sign"):
            //                                var data4 = JsonConvert.DeserializeObject<YDMSG.MsgCommandSign>(content);
            //                                eventAggregator.GetEvent<SignCommand>().Publish(data4);
            //                                break;
            //                            case ("DSIM.Command.AgentSign"):
            //                                var data5 = JsonConvert.DeserializeObject<YDMSG.MsgCommandSign>(content);
            //                                eventAggregator.GetEvent<AgentSignCommand>().Publish(data5);
            //                                break;
            //                            case ("DSIM.Command.Check"):
            //                                var data6 = JsonConvert.DeserializeObject<YDMSG.MsgSpeedCommand>(content);
            //                                eventAggregator.GetEvent<CheckSpeedCommand>().Publish(data6);
            //                                break;
            //                            case ("DSIM.Command.SpeedCache"):
            //                                var data7 = JsonConvert.DeserializeObject<YDMSG.MsgSpeedCommand>(content);
            //                                eventAggregator.GetEvent<CacheSpeedCommand>().Publish(data7);
            //                                break;
            //                            case ("DSIM.Command.Active"):
            //                                var data8 = JsonConvert.DeserializeObject<YDMSG.MsgSpeedCommand>(content);
            //                                eventAggregator.GetEvent<ActiveSpeedCommand>().Publish(data8);
            //                                break;
            //                            case ("DSIM.Command.Execute"):
            //                                var data9 = JsonConvert.DeserializeObject<YDMSG.MsgSpeedCommand>(content);
            //                                eventAggregator.GetEvent<ExecuteSpeedCommand>().Publish(data9);
            //                                break;
            //                            default:
            //                                break;
            //                        }
            //                    }
            //                }
            //            });
            //        }
            //    }
            //}
            //catch (Exception except)
            //{
            //    MessageBox.Show(except.Message);
            //}
        }
Example #24
0
 public static void Main()
 {
     MQHelper.InitMQ();
     Console.ReadLine();
 }
Example #25
0
        static void Main(string[] args)
        {
            var     cfg = File.ReadAllText(Path.Combine(Environment.CurrentDirectory, "config.json"));
            JObject jo  = (JObject)JsonConvert.DeserializeObject(cfg);

            LogHelper.StartService();

            var classId      = "64c01042e1e64d23812768196ff012f6";
            var timeTableId  = "30b35e08dab04a5a88198b3ccb4cac73";
            var accountId    = "li_003";
            var accessToken  = "ACC-ESS-TOKEN-2020";
            var T_T_T_BH     = "DEMO-TTT-BH";
            var url          = jo["URL"].ToString();
            var numberOfRuns = Convert.ToInt32(jo["NUMBEROFRUNS"].ToString());   // 最大运行次数
            var mqIp         = jo["MQIP"].ToString();
            var mqPort       = jo["MQPORT"].ToString();
            var mqUserName   = jo["MQUSERNAME"].ToString();
            var mqPassword   = jo["MQPASSWORD"].ToString();

            Task[] mqKaoQinTask = new Task[numberOfRuns];
            MQHelper.CreateMqConnection(mqIp, mqPort, mqUserName, mqPassword);

            var wsObj = WebServiceHelper.GetObject(url);

            bool isExitTask = false;

            for (var i = 0; i < numberOfRuns; i++)
            {
                var k = i;
                mqKaoQinTask[i] = new Task(() => {
                    // 获取上课信息
                    string[] param = new string[] { accountId, "21", accessToken };

                    LogHelper.Trace($"param::accountId:{param[0]},applicationType:{param[1]},accessToken:{param[2]}");
                    //var s = WebServiceHelper.CallMethod(url, "getCourseInfoWhenStudentLoginInfo", param);
                    var s = WebServiceHelper.CallMethod(wsObj, "getCourseInfoWhenStudentLoginInfo", param);
                    LogHelper.Trace(s);
                    // 考勤
                    var jObj = new JObject();
                    jObj.Add(new JProperty("studentAccountId", accountId));
                    jObj.Add(new JProperty("timeTableId", timeTableId));
                    jObj.Add(new JProperty("wifiName", "Wifi-liuzhenhua"));
                    jObj.Add(new JProperty("checkWorkStatus", "2"));
                    jObj.Add(new JProperty("checkWorkTime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")));
                    jObj.Add(new JProperty("classId", classId));
                    jObj.Add(new JProperty("tocken", accessToken));
                    var jsonPostData = jObj.ToString();
                    LogHelper.OutputDebugString($"MQ::{jsonPostData}");
                    MQHelper.sentMsgToMQqueue("checkwork", jsonPostData);
                });
            }
            ;
            Console.WriteLine($"[{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fff")}]开始并发测试MQ(考勤)...");
            mqKaoQinTask.ToList().ForEach(a => a.Start());
            #region 考勤统计
            Task.Run(() =>
            {
                while (!isExitTask)
                {
                    string method2  = "getCheckWorkStatistics";
                    string[] param2 = new string[] { timeTableId, T_T_T_BH, accessToken };
                    LogHelper.Trace("param::timeTableId:{0},T_T_T_BH:{1},token:{2}", param2[0], param2[1], param2[2]);
                    var s2 = WebServiceHelper.CallMethod(url, method2, param2);
                    LogHelper.Trace(s2);
                    LogHelper.Trace("Sleep 5000 ms.");
                    Thread.Sleep(5000);
                }
            });
            #endregion
            Task.WaitAll(mqKaoQinTask, 1000 * 60 * 5); // 最长等待5分钟
            isExitTask = true;
            Console.WriteLine($"[{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fff")}]完成...");
            LogHelper.Stop();
        }
Example #26
0
 public void ErrorHandle(Action <dynamic, Exception, Type> action)
 {
     MQHelper.ErrorHandle(action);
 }