.NET RabbitMQ 连接定位
最近生产上一组RabbitMQ连接数异常升高,需要排查原因,但这组MQ上的业务有很多,以集群方式部署,客户端通过VIP连接,中间还有一层F5,所以从管理界面上难以定位到具体是谁导致的,虽然后面通过扫描5672端口定位了罪魁祸首,但如果后续碰到类似情况,如何快速定位具体是哪块业务或者是哪台机器影响的呢?我们先看RabbitMQ的管理界面,在Connections页面中,虽然在Name中提供了【IP+Port】,但并非我们实际的客户端IP:
所以能否自定义Name呢,答案是肯定的,我们可以通过connectionFactory.CreateConnection(connName);
设置clientProvidedName
来设置连接名称,直接上代码:
Console.WriteLine("开始执行!");
ConnectionFactory connectionFactory = new ConnectionFactory();
connectionFactory.AutomaticRecoveryEnabled = true;
connectionFactory.NetworkRecoveryInterval = TimeSpan.FromSeconds(2.0);
connectionFactory.UserName = "admin";
connectionFactory.Password = "123456";
connectionFactory.HostName = "10.10.10.10";
connectionFactory.Port = 5672;
connectionFactory.VirtualHost = "/";
string connName = "连接示例";
var conn = connectionFactory.CreateConnection(connName);
var channel = conn.CreateModel();
EventingBasicConsumer eventingBasicConsumer = new EventingBasicConsumer(channel);
eventingBasicConsumer.Received += (sender, args) =>
{
string msg = Encoding.UTF8.GetString(args.Body.ToArray());
Console.WriteLine(msg);
};
string consumerTag = "消费者示例";
channel.BasicConsume("Q_Test", true, consumerTag, eventingBasicConsumer);
Console.WriteLine("连接中...");
Console.ReadLine();
效果如下:
细心的同学可能会发现我们还设置了consumerTag
,是的,消费者一样可以在BasicConsume
时通过设置consumerTag
来设置消费者名称,效果如下:
Redis连接定位
突然想到Redis也应该有类似问题,那肯定也有ClientName之类的了,在配置文件里加一个就行:
var connStr = "127.0.0.1:6379,password=123456,abortConnect=false,name=myname";
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人