参考博客 https://blog.csdn.net/u011511086/article/details/108406225
推荐使用NewLife.RocketMQ,创作团队牛逼,更新快,使用方便,已支持.net 5,性能和稳定性待观察
0、由于自家的Rocket服务器磁盘空间不足,导致一直写入失败,提示错误不够明显,最终浪费2个小时,最终总结建议适当怀疑别人
1、Nuget安装NewLife.RocketMQ
2、写入消息队列
try { //获取配置 var rocket = ConfigHelper.getRocket; Producer producer = new Producer { Topic = rocket.RocketTopic, NameServerAddress = rocket.RocketAddress, Group = rocket.RocketGroup }; //启动连接 producer.Start(); //发布消息 producer.Publish(JsonConvert.SerializeObject(wxMessage)); Console.WriteLine(JsonConvert.SerializeObject(wxMessage)); //释放连接 producer.Dispose(); } catch (Exception ex) { Console.WriteLine("写入消息队列出错:"+ex.ToString()); }
3、个人推荐先把数据写入数据库,再通过自动任务写入消息队列,充分保证系统的健壮性(由于本系统只负责写入消息,才有此推荐)
4、有第三步引起的问题,如果既是生产者也是消费者,怎样保证系统的稳定运行?
5、思考2分钟,感觉可以这样做:①大部分的问题在生产者,可以考虑对写入消息队列做一个补偿机制,尝试多次写入,如果多次写入还是失败,则存入指定数据表,后续通过另一个任务来继续写入,或者待排查问题后手动执行写入 ②消费者也会存在问题 比如重复消费的问题(了解了下kafka的pull,直呼牛逼)
6、是时候学习下kafka了