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;
        }

 

至此事成。

 

 

posted @ 2020-05-19 14:56  DemLiu  阅读(2034)  评论(0编辑  收藏  举报