Создание класса для RabbitMQ Client Connection - PullRequest
1 голос
/ 06 ноября 2019

Я хочу создать класс, вроде обертки для соединения RabbitMQ, чтобы публиковать сообщения для обмена. Это будет библиотека классов, используемая другой системой.

Мой вопрос довольно прост: как мне закрыть и открыть соединение?

Моя первоначальная идея примерно такая:

public class RabbitConnection
{
    private readonly IConnection conn;

    public RabbitConnection() {
        try {
         var factory = new ConnectionFactory() {...}
         this.conn = factory.CreateConnection();
        }
        catch {
         ...
        }
    }

    ...

    public void Publish<T>(T @event) where T : class {
        using (var channel = conn.CreateModel()) {
            ...
            channel.BasicPublish(...);
        }
    }
}

Это лучший способ, если я не ищу то, чтобы найти лучший шаблон?

Спасибо заранее!

1 Ответ

2 голосов
/ 06 ноября 2019

Откройте ваше соединение и канал в конструкторе и закройте их, когда экземпляр будет удален. Очень важно, чтобы RabbitConnection был долгоживущим. Если вы создаете и закрываете соединения снова и снова (наихудший случай для каждого сообщения), это резко снизит производительность, а также увеличит нагрузку на ваш сервер RabbitMQ и компьютер клиентского приложения.


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

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