Wrap RabbitMQ Connection в одном классе - PullRequest
0 голосов
/ 27 февраля 2019

Я прочитал, что когда я использую RabbitMQ, лучше всего использовать одно соединение на процесс, поэтому я хотел бы создать одноэлементный класс для соединения rabbitmq.Я хотел бы использовать Ленивую версию Singleton из: Реализация шаблона Singleton в C #

Я пишу этот класс:

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 Ответ

0 голосов
/ 27 февраля 2019

Я прочитал, что при использовании RabbitMQ рекомендуется использовать одно соединение на процесс

Нет, это не правильно.Вы должны использовать столько соединений, сколько требует ваш вариант использования, и определять количество соединений / каналов с помощью эталонов ожидаемой рабочей нагрузки.


ПРИМЕЧАНИЕ: команда RabbitMQ контролируетrabbitmq-users список рассылки и только иногда отвечает на вопросы о StackOverflow.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...