使用.net客户端发布到RabbitMQ时出现无效的\u帧\u结束\u标记错误

使用.net客户端发布到RabbitMQ时出现无效的\u帧\u结束\u标记错误,rabbitmq,Rabbitmq,我正在使用RabbitMQ.net客户端库以以下方式将消息发布到RabbitMQ节点 var factory = new ConnectionFactory { HostName = "localhost", Port = 5672, UserName = "guest", Password = "gues

我正在使用RabbitMQ.net客户端库以以下方式将消息发布到RabbitMQ节点

var factory = new ConnectionFactory
                {
                    HostName = "localhost",
                    Port = 5672,
                    UserName = "guest",
                    Password = "guest",
                    VirtualHost = @"/"
                };
_conn = factory.CreateConnection();

_channel = _conn.CreateModel();

_properties = _channel.CreateBasicProperties();
然后在循环中调用下面的

using (var memStream = new MemoryStream())
{
    var formatter = new BinaryFormatter();

    formatter.Serialize(memStream, message);

    var properties = _channel.CreateBasicProperties();
    properties.Priority = Convert.ToByte((int) priority);

   _channel.BasicPublish(String.Empty, _routeKey, properties, memStream.ToArray());
 }
上述代码在中等负载(大约每秒50-100条消息)下运行良好。但是,当我将要发布的消息数增加到每秒500条左右时,RabbitMQ节点开始给出以下错误并断开通道连接

Already closed: The AMQP operation was interrupted: AMQP close-reason, initiated by Peer, code=501, text="FRAME_ERROR - type 206, first 16 octets = <<31,0,60,0,40,0,0,6,115,101,110,115,111,114,16,115>>:
{invalid_frame_end_marker, 114}
", classId=0, methodId=0, cause=: 
at RabbitMQ.Client.Impl.SessionBase.Transmit(Command cmd) 
at RabbitMQ.Client.Impl.ModelBase.ModelSend(MethodBase method, ContentHeaderBase header, Byte[] body) 
at RabbitMQ.Client.Impl.ModelBase.BasicPublish(String exchange, String routingKey, Boolean mandatory, Boolean immediate, IBasicProperties basicProperties, Byte[] body) 
at RabbitMQ.Client.Impl.ModelBase.BasicPublish(String exchange, String routingKey, Boolean mandatory, IBasicProperties basicProperties, Byte[] body) 
at RabbitMQ.Client.Impl.ModelBase.BasicPublish(String exchange, String routingKey, IBasicProperties basicProperties, Byte[] body)`
已关闭:AMQP操作被中断:AMQP关闭原因,由对等方启动,code=501,text=“FRAME\u ERROR-type 206,前16个八位字节=:
{无效的\u帧\u结束\u标记,114}
,classId=0,methodId=0,原因=:
位于RabbitMQ.Client.Impl.SessionBase.Transmit(命令cmd)
在RabbitMQ.Client.Impl.ModelBase.ModelSend(MethodBase方法,ContentHeaderBase头,字节[]体)
位于RabbitMQ.Client.Impl.ModelBase.BasicPublish(字符串交换、字符串路由键、布尔强制、布尔立即数、IBasicProperties basicProperties、字节[]体)
位于RabbitMQ.Client.Impl.ModelBase.BasicPublish(字符串交换、字符串路由键、布尔强制、IBasicProperties basicProperties、字节[]体)
位于RabbitMQ.Client.Impl.ModelBase.BasicPublish(字符串交换,字符串路由键,IBasicProperties basicProperties,字节[]体)`

使用BinaryFormatter的邮件大小约为5kb。

您使用的是哪个版本?您是否在更多线程中使用
\u通道
?版本3.5.3和我只有一个线程写入MessageBroker。我发现,当节点达到
vm\u memory\u high\u watermark\u paging\u ratio
阈值时,错误开始出现。也许在这里打开一个问题,或者在我们的邮件列表上询问@AnkitSarochI,这个测试没有问题。我尝试了优先队列和不优先队列。你可以发布完整的代码,或者一个简单的问题代码吗@Ankitsarocas在上面评论道,我们增加了
vm\u memory\u high\u watermark\u paging\u ratio
,以便在发布的消息数量出现峰值时,消费者有足够的时间消费消息。所以,我认为这不是代码方面的问题,而是配置方面的问题。