rabbitmq - C# Convert ReadOnlyMemory to byte[] - Stack Overflow

来源: rabbitmq – C# Convert ReadOnlyMemory to byte[] – Stack Overflow

Given ReadOnlyMemory Struct I want to convert the stream into a string

I have the following code:

var body = ea.Body; //ea.Body is of Type ReadOnlyMemory<byte>
var message = Encoding.UTF8.GetString(body);
Console.WriteLine(" [x] Received {0}", message);

And it gives the following error. I am using the latest C# with .NET CORE 3.1

enter image description here

Which is funny because I am literally copy pasting the Hello World example of a major product called RabbitMQ and it doesn’t compile.

 

解决方法:

I updated the RabbitMQ.Client package and had the same problem at my Consumer_Received method:

private static void Consumer_Received(object sender, BasicDeliverEventArgs e)
        // Code

I checked BasicDeliverEventArgs and saw that Body is now a ReadOnlyMemory type:
public ReadOnlyMemory<byte> Body { get; set; }

As Jeff said, RabbitMQ changed their API, so I think this changed from previous tutorials we had on internet.

To fix, I only had to transform my Body message into a Array (into Consumer_Received method):
var message = Encoding.UTF8.GetString(e.Body.ToArray());

赞(3) 打赏
分享到: 更多 (0)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏