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?

questionAnswers(1)

yourAnswerToTheQuestion