【发布时间】:2019-04-02 02:16:26
【问题描述】:
我在 C# 中有一个 RabbitMQ 数据服务并“输出”一些消息。订阅者/客户端使用 Java。我可以接收消息,我知道如何在 C# 中反序列化,但我不知道如何将消息反序列化为对象。在 Java 中。
C# 序列化:
byte[] message;
BinaryFormatter bf = new BinaryFormatter();
using (var ms = new MemoryStream())
{
bf.Serialize(ms, updateMessage);
message = ms.ToArray();
}
C# 反序列化:
MyObject message = null;
using (var memStream = new MemoryStream())
{
var binForm = new BinaryFormatter();
memStream.Write(body, 0, body.Length);
memStream.Seek(0, SeekOrigin.Begin);
message = (MyObject)binForm.Deserialize(memStream);
}
Java 接收器:
@RabbitListener(queues = queueName)
public void receive(??? message ) {
// deserailize message right here
// btw, I do not know what type of received message should be initialized.
}
【问题讨论】:
-
我不明白你为什么要连载。 RabbitMQ 不会为您处理所有这些吗?
-
我不认为
BinaryFormatter真的打算在 .NET 世界之外使用。 -
默认的 RabbitMQ 编码是
var body = Encoding.UTF8.GetBytes(message);,但是我使用不同的方式来编码消息。
标签: java c# serialization memorystream binaryformatter