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 obigen Code, und ich bin neugierig auf Thread Sicherheit.C# RabbitMQ Client Thread Sicherheit
Ich bin mir nicht sicher, aber ich würde mir vorstellen ConnectionFactory
ist Thread sicher. Aber dann bin ich mir nicht sicher, ob IConnection
Thread sicher ist? Sollte ich eine Verbindung pro Anfrage erstellen? Oder eher eine einzige dauerhafte Verbindung? Und was ist mit IChannel
?
Soll ich die Verbindung auch als ThreadLocal speichern? Oder sollte ich eine Verbindung pro Anfrage erstellen?
siehe meine Antwort auf diese Frage http://stackoverflow.com/questions/10407760/is-there-a-performance-difference-between-pooling-connections-or-channel-in-rab/10501593#10501593 – robthewolf