广州凡科互联网科技有限公司

营业时间
MON-SAT 9:00-18:00

全国服务热线
18720358503

公司门店地址
广州市海珠区工业大道北67号凤凰创意园

小程序模板源码下载_详解Node.js amqplib 连接 Rabb

日期:2021-01-08 浏览:
详解Node.js amqplib 连接 Rabbit MQ最佳实践       这篇文章主要介绍了详解Node.js amqplib 连接 Rabbit MQ最佳实践,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

在建立连接时,设置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的内存消耗。ion占用将会导致内存溢出,服务崩溃等问题。(我曾遇到过生产系统,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

一个进程,一个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)

参考




以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持凡科。




新闻资讯

联系方式丨CONTACT

  • 全国热线:18720358503
  • 传真热线:18720358503
  • Q Q咨询:2639601583
  • 企业邮箱:2639601583@qq.com

首页
电话
短信
联系