.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";
posted @   猫探长  阅读(10)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示