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); }
/// <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(); }));
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); }
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); }
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()); }
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); }
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("成功了!"); }
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."); } }
/// <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); } }
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(); }
//入组执行发送 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); } }
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."); }
/// <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; } }
/// <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); } }
/// <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; } }
public void ErrorHandle(Func <dynamic, Exception, Type, Task> func) { MQHelper.ErrorHandle(func); }
/// <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)); }
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(); }
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); //} }
public static void Main() { MQHelper.InitMQ(); Console.ReadLine(); }
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(); }
public void ErrorHandle(Action <dynamic, Exception, Type> action) { MQHelper.ErrorHandle(action); }