为RabbitMQ客户端连接创建类

问题描述 投票:1回答:1

我想创建一个类(类似于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(...);
        }
    }
}

这不是不是寻找最佳模式的最佳方法吗?

谢谢前进!

c# design-patterns rabbitmq
1个回答
2
投票

在构造函数中打开您的连接和通道,并在处置实例后将其关闭。 RabbitConnection的寿命很重要。如果您一遍又一遍地创建和关闭连接(最坏的情况是每个消息),它将大大降低性能,并增加RabbitMQ服务器和客户端应用程序计算机上的负载。


[NOTE: RabbitMQ团队监视rabbitmq-users mailing list,并且有时仅在StackOverflow上回答问题。

© www.soinside.com 2019 - 2024. All rights reserved.