我需要使用RabbitMQ通过队列发送和接收文件。我没有直接发送文件的任何解决方案,因此我正在使用以下代码,并计划读取文件并将文件数据发送到接收器。但是我不认为这是个好方法。可能会有更好的方法。
var factory = new ConnectionFactory() { HostName = "localhost" };
using(var connection = factory.CreateConnection())
using(var channel = connection.CreateModel())
{
channel.QueueDeclare(queue: "hello", durable: false, exclusive: false, autoDelete: false, arguments: null);
var body = File.ReadAllBytes("SomePath");
channel.BasicPublish(exchange: "", routingKey: "hello", basicProperties: null, body: body);
Console.WriteLine(" [x] Sent {0}", message);
}
此代码也有一个限制,我不能直接在数据中传递文件名。因此,我想到了两种方法。
请让我知道是否有更好的发送和接收文件的方法。
我想告诉你一些事情:
首先,发送和接收大邮件不是一个好方法。仅仅是因为它会对性能造成负面影响(尽管理论上message size limit in RabbitMQ在3.7.0以下为2GB)。
第二,如果您仍然想直接发送文件,RabbitMQ可以使用两种不同的技术来处理大型消息:
==>欲了解更多详情,您可以阅读here
Finnaly,根据我的专业经验,我只是将字节内容存储在数据库中,然后发送存储在发送方中的ID,然后在接收方中,我只是通过ID从数据库中读取文件内容。
希望它能为您提供一些解决问题的建议和想法。