京东价格监控软件开发技术探讨十五:通过酷Q和ZeroMQ实现推送变价变库消息到QQ群
在對該需求展開進行說明前,我們需要先了解幾個基本名詞。
1、酷Q是什么?
簡單來說,酷Q是一個QQ機器人軟件,能在QQ群里回答、發布信息。相關的機器人軟件比較多,如QQLight、
2、ZeroMQ是什么?
簡單來說,ZeroMQ是一個網絡層的數據通信組件,支持TCP或UDP發送數據。具體到C#,有一個NetMQ的組件,簡單好用。
酷Q的使用就不多說了,可以加入酷Q官網或者相關技術群進行學習。
NetMQ的使用非常簡單,我們需要創建一個服務端和一個客戶端。服務端接收數據,客戶端發送數據。
第一步:引用兩個類庫,AsyncIO和NetMQ,可直接在NuGet下載。
第二步:創建服務端,通過While(true)保持監聽
using (NetMQSocket serverSocket = new ResponseSocket()) {serverSocket.Bind("tcp://127.0.0.1:5555");while (true){string message1 = serverSocket.ReceiveFrameString();Console.WriteLine("Receive message :\r\n{0}\r\n", message1);string[] msg = message1.Split(':');string message = msg[1];serverSocket.SendFrame(message);if (message == "exit"){break;}} }第三步:創建客戶端
using (NetMQSocket clientSocket = new RequestSocket()){clientSocket.Connect("tcp://127.0.0.1:5555");string message = "Hello";clientSocket.SendFrame(num + ":" + message);string answer = clientSocket.ReceiveFrameString();Console.WriteLine("Answer from server:{0}", answer);}?需要特別注意的是,客戶端必須接收服務端的回饋信息,否則會報異常。
上面三步就已經搭建起了基本的NetMQ通信框架。現在我們將這段代碼移植到酷Q插件中去。
在插件加載的事件中,將酷QAPI的對象存儲下來,然后創建一個NetMQHelper類,在該類的Push(方法名稱隨意)事件中,編寫如下代碼。
Task.Factory.StartNew(() =>{using (this.Socket = new ResponseSocket($"@tcp://{Common.NetMQSrv}:{Common.ZeroMqPort}")){BEnable = true;while (BEnable){//log.Info("ZeroMQ", "Execing");string msg = this.Socket.ReceiveFrameString();if (!string.IsNullOrEmpty(msg)){//log.Info("ZeroMQ", msg);File.AppendAllText($@"{Common.RunDirectory}/Logs/NetMQ.log", $"{DateTime.Now} 收到 {msg}\r\n");if (OnMessage != null){OnMessage(msg);}}Socket.SendFrame(msg);//Console.WriteLine("進行 線程" + Thread.CurrentThread.ManagedThreadId);}}}, TaskCreationOptions.LongRunning);其中的OnMessage是一個代理事件,當通過NetMQ接收到數據后,可通過OnMessage和其它業務關聯起來進行業務處理,比如調用酷Q的群消息推送。
操作原理就是這樣了,趕緊去試試,不明白的可以加群一起討論。在此說明下,插件的開發是使用的Native.SDK開發框架,在網上搜搜,此處就略過不表。
殺京東 做最走心的電商輿情監控平臺 免費開源的價格監控軟件 歡迎加入QQ群415014949一起討論
總結
以上是生活随笔為你收集整理的京东价格监控软件开发技术探讨十五:通过酷Q和ZeroMQ实现推送变价变库消息到QQ群的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Andr oid 多窗 口编程
- 下一篇: 种子搜索神器如何用【详解】