无法从“System.ReadOnlyMemory<byte>”转换为“byte[]”

简介: 无法从“System.ReadOnlyMemory<byte>”转换为“byte[]”

1、问题复现

RabbitMQ的官方示例:RabbitMQ消费端(接收端)获取消息时抛出异常,具体代码如下

var consumer = new EventingBasicConsumer(channel);
consumer.Received += (model, ea) =>
{
    var body = ea.Body;
    var message = Encoding.UTF8.GetString(body); // <------错误点
    Console.WriteLine(" [x] Received {0}", message);
};

image.gif

2、解决办法

查看定义可以看到Encoding.UTF8.GetString重载的方法有多个,参数为字节数组或其指针或只读的字节跨度。

image.gif

RabbitMQ更新API的地址:https://github.com/rabbitmq/rabbitmq-dotnet-client/commit/8bf93082fd2c18bbd6adff260d38a6fd34d6840b

接下来说下解决办法

① ToArrary()

示例是之前的示例,现在官方示例已更正,最新示例地址:https://www.rabbitmq.com/tutorials/tutorial-one-dotnet.html

var consumer = new EventingBasicConsumer(channel);
consumer.Received += (model, ea) =>
{
    var body = ea.Body.ToArray(); // 将内存区域的内容复制到一个新的数组中
    var message = Encoding.UTF8.GetString(body);
    Console.WriteLine(" [x] Received {0}", message);
};

image.gif

② Span

var consumer = new EventingBasicConsumer(channel);
consumer.Received += (model, ea) =>
{
    var body = ea.Body.Span; // 从内存区域获取一个跨度
    var message = Encoding.UTF8.GetString(body);
    Console.WriteLine(" [x] Received {0}", message);
};

image.gif

以上就是无法从“System.ReadOnlyMemory<byte>”转换为“byte[]”的介绍,做此记录,如有帮助,欢迎点赞关注收藏!

相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
目录
相关文章
|
11月前
|
测试技术 C#
C# byte[] 如何转换成byte*
C# byte[] 如何转换成byte*
|
缓存 安全 Java
ByteArray转byte[]的两种方式以及HeapByteBuffer&DirectByteBuffer
将ByteArray转byte[],大部分人第一时间会使用get函数
640 0
|
10月前
|
Java
byte[]转换成String
byte[]转换成String
将byte[]转为WriteableBitmap对象
原文:将byte[]转为WriteableBitmap对象 //convert the bytes to WriteableBitmap privateWriteableBitmap BytesToImage(by...
1192 0
将WriteableBitmap转为byte[]
原文:将WriteableBitmap转为byte[] Win8 metro中的操作与之前的版本有所不同,因此作为一个新手,我将自己的一些问题解答记录了下来,希望与大家分享!! 下面是将WriteableBitma...
1075 0