指定 ReadOnlyMemory Struct ストリームを文字列に変換したい
私は次のコードを持っています:
var body = ea.Body; //ea.Body is of Type ReadOnlyMemory<byte>
var message = Encoding.UTF8.GetString(body);
Console.WriteLine(" [x] Received {0}", message);
そして、次のエラーが発生します。 .NET CORE 3.1で最新のC#を使用しています
Hello Worldの例を文字通りコピーして貼り付けている RabbitMQと呼ばれる主要製品の でコンパイルできないので、これはおかしいです。
RabbitMQ.Clientパッケージを更新したところ、Consumer_Receivedメソッドで同じ問題が発生しました。
_private static void Consumer_Received(object sender, BasicDeliverEventArgs e)
// Code
_
BasicDeliverEventArgs
を確認したところ、Body
がReadOnlyMemoryタイプになっていることがわかりました。
_public ReadOnlyMemory<byte> Body { get; set; }
_
ジェフが言ったように RabbitMQはAPIを変更しました なので、これは以前にインターネットで行ったチュートリアルから変更されたと思います。
修正するには、Bodyメッセージを配列(Consumer_Receivedメソッドに)に変換するだけでした:var message = Encoding.UTF8.GetString(e.Body.ToArray());