nats消息队列处理
case:
由于在agent中直接处理mongodb写,而写db耗时,加上db操作过多(其他服务使用) 导致内存占用超多,时而导致agent重启。
solution:
所以想把写db这个事情分离出来,发送到mq,由接收端写入db。
rabbitmq因为有其他正常服务在使用,不想因为简单日志占用太多rabbitmq资源,而导致正常服务有影响。所以找了一个简单的mq:nats(Welcome | NATS Docs),单文件,跨平台,多语言sdk。
nats的默认配置很好用。
使用时发现丢包,(实际可能是清空队列导致的),考虑到持久化问题,使用了其jetStream模式。
nets.client改用为nets.net客户端。
解决了agent端的问题,但在写入db时依然比较慢。重新启动了一个mongodb实例。
正式平台出现了,consumer不消费的问题,对于stream的创建,consumer的创建等参数问题还不是十分了解。
用python客户端简单测试了下是可以的。暂时就这样。
mongodb的新实例可能是解决这些问题的关键。
mongodb的repl模式没有测试成功。
js的prisma模型没有测试。