我在C#中有一个RabbitMQ数据服务,在“fout”中有一些消息。订阅者/客户端是Java。我可以收到消息,我知道如何在C#中反序列化,但我不知道如何将消息反序列化为对象。在Java中。
C#Serialize:
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.
}
使用.NET内置的二进制序列化器序列化反序列化Java中的对象是不可能没有很大困难的(您必须自己实现反序列化器)。
最简单的选择是使用基于文本的序列化选项,如JSON和XML。有很多关于如何在C#和Java中执行此操作的教程。
如果你需要使用二进制格式,一些选项可能是谷歌的协议缓冲区或apache thrift。