前段時間項目上推送待辦信息,接收方OA用RocketMQ進行接收待辦,這也是我第一次接觸RMq,記錄下使用過程。(參考https://rocketmq.apache.org/)
一、准備工作
引入相關類文件dll.(Nuget下載就好了)。
前期准備工作完成后,進入主題。
二、代碼與實操
由於.NET framework版本的問題(kafka 只支持4.8及以上版本), 建議使用RocketMQ.
1 a)消息格式: 2 消息主題: kara_linker 3 b)消息體: 4 { 5 "messageTo":"$TOPIC", 6 "messageBody":{待辦/任務跟蹤詳情} 7 } 8 MessageTO Topic: 9 a)待辦: task_info_topicName 10 b)任務跟蹤: task_trace_topicName
前期鋪墊完成,直接上代碼。
public bool _requestMq(string msgBody,out string errMsg) { bool result = true; try { DefaultMQProducer p = new DefaultMQProducer("producerGroup"); //producerGroup自行約定 p.setNamesrvAddr("集群IP:port");//多個IP用';'隔開 如:1.1.1.1:2230;1.1.1.2:2230 p.setInstanceName(getRocketMqUniqeInstanceName()); p.setVipChannelEnabled(false); p.start(); var data = "傳輸消息"; org.apache.rocketmq.common.message.Message m = new org.apache.rocketmq.common.message.Message("kara_linker","task_info_topicName", data); SendResult sr = p.send(m); Pub_Method.WriteFile("sr.getMsgId():"+sr.getMsgId(), logName, out errMsg, logKey);//getMsgId()為返回標識,最好記錄下,后期避免打嘴官司。 p.shutdown(); result = true; errMsg = ""; } catch (Exception ex) { result = false; errMsg = ex.Message; Pub_Method.WriteFile("發送信息失敗:" + ex.Message.ToString(), logName, out errMsg, logKey); } return result; }
至此事成。