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());
}
}
Tôi có mã ở trên và tôi tò mò về sự an toàn của luồng.C# RabbitMQ An toàn chủ đề của khách hàng
Tôi không chắc chắn, nhưng tôi sẽ tưởng tượng ConnectionFactory
là chủ đề an toàn. Nhưng sau đó tôi không chắc chắn nếu IConnection
là chủ đề an toàn? Tôi có nên tạo kết nối cho mỗi yêu cầu không? Hay đúng hơn là một kết nối liên tục? Và những gì về IChannel
?
Ngoài ra, tôi có nên lưu trữ kết nối dưới dạng ThreadLocal không? Hoặc tôi có nên tạo kết nối cho mỗi yêu cầu không?
xem câu trả lời của tôi cho câu hỏi này http://stackoverflow.com/questions/10407760/is-there-a-performance-difference-between-pooling-connections-or-channels-in-rab/10501593#10501593 – robthewolf