如何在C#中通过RabbitMQ队列发送接收文件?

如何在C#中通过RabbitMQ队列发送接收文件?,c#,rabbitmq,C#,Rabbitmq,我需要使用RabbitMQ通过队列发送和接收文件。我没有得到任何直接发送文件的解决方案,所以我使用下面的代码,并计划读取文件并将文件数据发送给接收者。但我认为这不是一个好办法。也许有更好的办法 var factory = new ConnectionFactory() { HostName = "localhost" }; using(var connection = factory.CreateConnection()) using(var channel =

我需要使用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);
        }
这段代码还有一个限制,我不能直接在数据中传递文件名。所以我想到了两种方法

  • 转换字节数组中的文件名,并附加文件数据字节数组。在客户端,从字节数组中提取文件名
  • 进行两次调用,一次用于发送文件名,另一次用于发送文件数据,并在接收方使用文件名和文件数据创建相同的文件

  • 请告诉我是否有更好的方法来发送和接收文件。

    传递文件引用而不是文件本身不是更好吗?这两个应用程序可以在不同的机器上,也可以看到较大的消息可能会导致性能问题。@Slappywag link in not accessible,给出404错误。考虑到这些文件都很小。顺便问一下,最大数据限制是多少?@Valu3我采用了第一种方法