将RabbitMQ Connection Package 在单例类中

oxf4rvwz  于 12个月前  发布在  RabbitMQ
关注(0)|答案(1)|浏览(108)

我读到过,当我使用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);
....

这种实现方式是对还是错?谢谢你

cu6pst1q

cu6pst1q1#

我读到过,当我使用RabbitMQ时,最佳实践是每个进程使用一个连接
不,这是不正确的。您应该使用尽可能多的连接作为您的用例需求,并通过使用预期工作负载的基准来确定连接/通道计数。

相关问题