C#推送RocketMQ信息
前段时间项目上推送待办信息,接收方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; }
至此事成。