学堂 学堂 学堂公众号手机端

在C#中,可以通过使用RabbitMQ.Client库来连接和操作RabbitMQ消息队列。以下是一个简单的示例,展示了如何封装一个基本的RabbitMQ连接池方法

lewis 1年前 (2024-04-29) 阅读数 13 #技术

在C#中,可以通过使用RabbitMQ.Client库来连接和操作RabbitMQ消息队列。以下是一个简单的示例,展示了如何封装一个基本的RabbitMQ连接池方法:

usingSystem; usingRabbitMQ.Client; usingRabbitMQ.Client.Events; publicclassRabbitMQPool { privatereadonlystring_connectionString; privateIConnection_connection; privateIModel_channel; publicRabbitMQPool(stringconnectionString) { _connectionString=connectionString; CreateConnection(); } publicvoidCreateConnection() { varfactory=newConnectionFactory { Uri=newUri(_connectionString) }; _connection=factory.CreateConnection(); _channel=_connection.CreateModel(); } publicvoidPublish(stringexchange,stringroutingKey,byte[]message) { _channel.BasicPublish(exchange,routingKey,null,message); } publicvoidConsume(stringqueue,Action<byte[]>callback) { varconsumer=newEventingBasicConsumer(_channel); consumer.Received+=(model,ea)=> { varbody=ea.Body.ToArray(); callback(body); }; _channel.BasicConsume(queue,true,consumer); } publicvoidCloseConnection() { _channel?.Close(); _connection?.Close(); } }

使用示例:

varconnectionString="amqp://guest:guest@localhost:5672"; varpool=newRabbitMQPool(connectionString); //发布消息 varexchange="myExchange"; varroutingKey="myRoutingKey"; varmessage=Encoding.UTF8.GetBytes("HelloRabbitMQ"); pool.Publish(exchange,routingKey,message); //消费消息 varqueue="myQueue"; pool.Consume(queue,(body)=> { varreceivedMessage=Encoding.UTF8.GetString(body); Console.WriteLine(receivedMessage); }); //关闭连接 pool.CloseConnection();

注意:在实际使用中,你可能需要根据自己的需求进一步完善和优化连接池的功能,例如添加连接池大小限制、连接复用等。上述示例仅提供了一个基本的封装框架,你可以根据自己的实际需求进行调整和扩展。


版权声明

本文仅代表作者观点,不代表博信信息网立场。

热门