我想创建一个类(类似于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(...);
}
}
}
这不是不是寻找最佳模式的最佳方法吗?
谢谢前进!
在构造函数中打开您的连接和通道,并在处置实例后将其关闭。 RabbitConnection
的寿命很重要。如果您一遍又一遍地创建和关闭连接(最坏的情况是每个消息),它将大大降低性能,并增加RabbitMQ服务器和客户端应用程序计算机上的负载。
[NOTE: RabbitMQ团队监视rabbitmq-users
mailing list,并且有时仅在StackOverflow上回答问题。