我读到过,当我使用RabbitMQ时,最好的做法是每个进程使用一个连接,所以我想为rabbitmq连接创建一个单例类。我想使用Singleton的Lazy版本:在C#中实现Singleton模式
我写这个类:
public class RabbitConnection
{
private static readonly Lazy<RabbitConnection> Lazy = new Lazy<RabbitConnection>(() => new RabbitConnection());
private RabbitConnection()
{
IConnectionFactory connectionFactory = new ConnectionFactory
{
HostName = "127.0.0.1",
Port = 5672,
UserName = "Username",
Password = "********"
};
Connection = connectionFactory.CreateConnection();
}
public static RabbitConnection Instance
{
get { return Lazy.Value; }
}
public IConnection Connection { get; }
}
然后像这样使用:
var channel = RabbitConnection.Instance.Connection.CreateModel();
channel.QueueDeclare("myQueue", true, false, false, null);
....
这种实现方式是对还是错?谢谢你
1条答案
按热度按时间cu6pst1q1#
我读到过,当我使用RabbitMQ时,最佳实践是每个进程使用一个连接
不,这是不正确的。您应该使用尽可能多的连接作为您的用例需求,并通过使用预期工作负载的基准来确定连接/通道计数。