logo资料库

详解Node.js amqplib 连接 Rabbit MQ最佳实践.pdf

第1页 / 共1页
资料共1页,全文预览结束
详解详解Node.js amqplib 连接连接 Rabbit MQ最佳实践 最佳实践 主要介绍了详解Node.js amqplib 连接 Rabbit MQ最佳实践,小编觉得挺不错的,现在分享给大家,也给大家做 个参考。一起跟随小编过来看看吧 客户端设置connection_name 客户端设置 在建立连接时,设置connection_name属性,可以在RabbitMQ Managerment 中查看到连接来自那个实例。 amqp.connect(rabbitMqAddress, { clientProperties: { connection_name: 'your host name' } }) 队列属性autoDelete durable 队列属性 如无必要,建议将队列设置成自动删除,这个在TCP连接断开后,队列会自动删除。另外也不要使用持久化队列。 channel.assertQueue(queueName, { autoDelete: true, durable: false }) connnection 和和 channel管理管理 connnection的内存消耗。一个connection至少要使用100kb的内存空间,过多的connetion占用将会导致内存溢出,服务崩溃 等问题。(我曾遇到过生产系统,RabbitMQ连接过多,系统一直处于崩溃边缘的险境) 重用connection或者channel,而不要重复开关,下面给出AMQP各个阶段所耗费的tcp包,重复的开关,将会导致 AMQP connections: 7 TCP packages AMQP channel: 2 TCP packages AMQP publish: 1 TCP package (more for larger messages) AMQP close channel: 2 TCP packages AMQP close connection: 2 TCP packages Total 14-19 packages (+ Acks) 一个进程,一个channel, 一个connection,如果一个pod向RabbitMQ建立了多条tcp连接,你就要警惕了。 监控进程与RabbitMQ TCP连接数,将NodeJS的运行信息写入influxDB,并在grafana做监控和告警。其中tcp连接数可以使用 shelljs执行命令获取。 function getRabbitMqConnnectionCount (params) { shell.exec(`netstat -nt | grep ${rabbitmqHost} | wc -l`, (code, stdout, stderr) => { try { if (code === 0) { rabbitMqConnnectionCount = parseInt(stdout) || 0 } } catch (error) { log.error(error.message) } }) } 参考参考 https://www.cloudamqp.com/blog/2017-12-29-part1-rabbitmq-best-practice.html https://www.cloudamqp.com/blog/2018-01-08-part2-rabbitmq-best-practice-for-high-performance.html https://www.cloudamqp.com/blog/2018-01-19-part4-rabbitmq-13-common-errors.html 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
分享到:
收藏