C# - RabbitMQ-Client thread-Sicherheit

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());

    }

}

Ich habe den code oben, und ich bin neugierig, um die thread-Sicherheit.

Ich bin mir nicht sicher, aber ich könnte mir vorstellen ConnectionFactory ist thread-sicher. Aber dann bin ich nicht sicher, ob IConnection ist thread-sicher? Sollte ich Verbindung pro Anfrage? Oder eher eine persistent-Verbindung? Und was ist mit IChannel?

Außerdem Lagere ich die Verbindung als ThreadLocal? Oder sollte ich eine Verbindung pro Anfrage?

InformationsquelleAutor DarthVader | 2012-08-19
Schreibe einen Kommentar