Десериализовать сообщение RabbitMQ, сгенерированное C # в Java - PullRequest
0 голосов
/ 02 апреля 2019

У меня есть служба данных RabbitMQ на C # и "fout" некоторые сообщения. Подписчик / клиент находится на 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.
}

1 Ответ

0 голосов
/ 02 апреля 2019

Десериализация объекта в Java, который был сериализован с помощью сборки .NET в двоичном сериализаторе, невозможна без особых трудностей (вам придется реализовать десериализатор самостоятельно).

Самым простым вариантом будет использование опции сериализации на основе текста, такой как JSON и XML.Существует множество учебных пособий о том, как это сделать как в C #, так и в Java.

Если вам нужно использовать двоичный формат, некоторые параметры, которые нужно изучить, будут буферами протокола Google или Apache Thrift.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...