国产消息中间件TongLINKQ初体验:在Windows 10上用C#写个简单的生产者和消费者
国产消息中间件TongLINKQ初体验在Windows 10上用C#写个简单的生产者和消费者消息中间件作为分布式系统的中枢神经其重要性不言而喻。而国产化替代浪潮下TongLINKQ这类自主研发的消息中间件正逐渐进入开发者视野。本文将带你在Windows 10环境下用熟悉的C#语言快速搭建一个最小化的消息收发Demo体验这款国产中间件的核心能力。1. 环境准备与安装1.1 获取TongLINKQ开发包首先需要从官方渠道获取Windows版本的开发套件。典型安装包包含以下核心组件TLQ Core Service核心服务程序需以管理员身份运行安装TLQ Manager可视化管理系统API Libraries各语言客户端库重点关注TLQClient.NET.dllSample Code各语言示例代码安装完成后建议将TLQClient.NET.dll所在目录通常位于C:\TongLINKQ\lib\net添加到系统PATH环境变量方便后续项目引用。1.2 创建Visual Studio项目使用Visual Studio 2019/2022新建一个Console App (.NET Core)项目通过NuGet添加必要依赖dotnet add package Newtonsoft.Json --version 13.0.1然后手动添加TLQ客户端库引用。右键项目→添加→引用→浏览选择安装目录下的TLQClient.NET.dll。2. 配置基础消息服务2.1 启动本地TLQ服务在开始菜单找到TongLINKQ服务管理器启动以下两个服务TLQ Node Monitor节点监控服务TLQ QCU Manager队列控制单元管理服务服务启动后可以通过http://localhost:8080访问内置的Web管理界面默认账号/密码为admin/123456。2.2 创建测试队列在管理界面执行以下操作导航至队列管理→新建队列填写队列参数队列名称TEST.QUEUEQCU名称DEFAULT_QCU队列类型本地队列持久化是优先级启用注意生产环境需要配置更复杂的队列策略但演示环境保持默认即可。3. 实现消息生产者新建Producer.cs文件编写基础发送逻辑using TongLINKQ; using Newtonsoft.Json; class Producer { static void Main(string[] args) { // 1. 创建连接工厂 var factory new TLQConnectionFactory(); // 2. 配置连接参数 var props new TLQProperties { {TLQ.ConnectionName, NET_PROD_CONN}, {TLQ.NodeName, WIN10_NODE}, {TLQ.QcuName, DEFAULT_QCU}, {TLQ.Host, localhost}, {TLQ.Port, 9001} }; // 3. 建立连接并创建会话 using var connection factory.CreateConnection(props); using var session connection.CreateSession(); // 4. 创建目标队列 var queue session.CreateQueue(TEST.QUEUE); // 5. 创建生产者并发送消息 var producer session.CreateProducer(queue); var message new { Content Hello TongLINKQ, Timestamp DateTime.Now, Priority 5 }; var textMessage session.CreateTextMessage( JsonConvert.SerializeObject(message) ); producer.Send(textMessage); Console.WriteLine($消息已发送{message}); } }关键参数说明参数名说明示例值TLQ.ConnectionName连接标识名NET_PROD_CONNTLQ.NodeName节点名称WIN10_NODETLQ.QcuNameQCU名称DEFAULT_QCUTLQ.Host服务地址localhostTLQ.Port服务端口90014. 实现消息消费者创建Consumer.cs实现异步消息接收using TongLINKQ; using Newtonsoft.Json; class Consumer { static void Main(string[] args) { var factory new TLQConnectionFactory(); var props new TLQProperties { {TLQ.ConnectionName, NET_CONS_CONN}, {TLQ.NodeName, WIN10_NODE}, {TLQ.QcuName, DEFAULT_QCU}, {TLQ.Host, localhost}, {TLQ.Port, 9001} }; using var connection factory.CreateConnection(props); connection.Start(); // 必须显式启动连接 using var session connection.CreateSession(); var queue session.CreateQueue(TEST.QUEUE); var consumer session.CreateConsumer(queue); consumer.MessageListener (message) { if (message is ITextMessage textMsg) { var obj JsonConvert.DeserializeObject(textMsg.Text); Console.WriteLine($收到消息{obj}); } return MessageListenerResponse.MessageConsumedSuccess; }; Console.WriteLine(消费者已启动按任意键退出...); Console.ReadKey(); } }5. 运行与调试技巧5.1 启动顺序建议先启动TLQ核心服务运行生产者程序观察消息是否成功入队运行消费者程序验证消息接收5.2 常见问题排查连接失败检查服务端口(9001)是否开放防火墙设置消息未消费确认消费者连接已调用Start()方法序列化异常确保消息体是合法的JSON格式权限问题以管理员身份运行Visual Studio可以通过管理界面的消息追踪功能实时查看消息流向# 快速查询队列状态命令行工具 tlqadmin -q STAT -n TEST.QUEUE6. 进阶功能探索6.1 消息优先级实践修改生产者代码体验优先级特性// 设置消息优先级0-9 textMessage.Priority 9; // 最高优先级 producer.Send(textMessage);在管理界面观察队列详情可以看到不同优先级的消息会分层显示。6.2 持久化消息测试通过以下代码创建持久化消息即使服务重启也不会丢失textMessage.Persistent true; producer.Send(textMessage);6.3 事务支持示例TongLINKQ提供完整的事务支持using var session connection.CreateSession(true); // 开启事务 try { producer.Send(message1); producer.Send(message2); session.Commit(); // 提交事务 } catch { session.Rollback(); // 回滚事务 }7. 性能优化建议对于生产环境部署建议考虑以下配置调整连接池配置复用连接减少开销批量发送积累多条消息后一次性发送异步确认避免阻塞生产者线程内存调优调整QCU的缓冲区大小监控指标参考值指标正常范围异常阈值消息积压10005000平均延迟50ms200msCPU占用60%90%可以通过以下代码获取运行时统计var stats connection.GetConnectionStats(); Console.WriteLine($活跃会话数{stats.ActiveSessions});