在C#中,可以通过使用RabbitMQ.Client库来连接和操作RabbitMQ消息队列。以下是一个简单的示例,展示了如何封装一个基本的RabbitMQ连接池方法
在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();
注意:在实际使用中,你可能需要根据自己的需求进一步完善和优化连接池的功能,例如添加连接池大小限制、连接复用等。上述示例仅提供了一个基本的封装框架,你可以根据自己的实际需求进行调整和扩展。
版权声明
本文仅代表作者观点,不代表博信信息网立场。