ConnectionFactory factory = new ConnectionFactory {HostName = "localhost"};
using (IConnection connection = factory.CreateConnection())
using (IModel channel = connection.CreateModel())
{
channel.QueueDeclare("hello", false, false, false, null);
for (int i = 0; i < 100000; i++)
{
MemoryStream stream = new MemoryStream();
var user = new User
{
Id = i
};
Serializer.Serialize(stream, user);
channel.BasicPublish("", "hello", null, stream.ToArray());
}
}
我有上面的代码,我很担心它的线程安全性。
我不确定,但我想象ConnectionFactory
是线程安全的。但是IConnection
是否线程安全?我应该每个请求创建一个连接,还是一个单独的持久化连接?那么通道(IModel
)又是如何呢?
此外,我应该将连接存储为ThreadLocal吗?还是应该每个请求创建一个连接?