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());
}
}
Tengo el código anterior, y tengo curiosidad acerca de la seguridad de los hilos.C# RabbitMQ Client thread safety
No estoy seguro, pero me imagino que ConnectionFactory
es seguro para subprocesos. Pero entonces no estoy seguro de si IConnection
es seguro para subprocesos? ¿Debo crear conexión por solicitud? ¿O más bien una única conexión persistente? ¿Y qué pasa con IChannel
?
Además, ¿debo almacenar la conexión como ThreadLocal? ¿O debería crear una conexión por solicitud?
ver mi respuesta a esta pregunta http://stackoverflow.com/questions/10407760/is-there-a-performance-difference-between-pooling-connections- or-channels-in-rab/10501593#10501593 – robthewolf