Segurança de thread do cliente C # RabbitMQ
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());
}
}
Eu tenho o código acima e estou curioso sobre segurança de thread.
Não tenho certeza, mas imaginoConnectionFactory
é thread-safe. Mas então eu não tenho certeza seIConnection
é thread seguro? Devo criar uma conexão por solicitação? Ou melhor, uma única conexão persistente? E sobreIChannel
?
Além disso, devo armazenar a conexão como ThreadLocal? Ou devo criar uma conexão por solicitação?