来源: 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
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());