2015-04-30 8 views
3

фона:
C# WPF приложения, взаимодействующего с JAVA-сервер работает на Linux с помощью ActiveMQ (Apache.NMS)/JSON (Newtonsoft.Json)Как получить основной дескриптор поток из сообщения Apache NMS ActiveMQ

Проблема:
JSON сообщений больше, чем 85000 байт приводит к Лох Фрагментация

Возможное решение:
Вместо чтения-го е JSON как Apache.NMS.ITextMessage (который в настоящее время имеет место), получить основной поток ручку и десериализации с помощью JsonTextReader

вопросы реализации:
Казалось бы, что это не поддерживается Apache.NMS API, хотя есть варианты ActiveMQStreamMessage/ActiveMQBytesMessage, которые здесь не соответствуют действительности.

Хотелось бы узнать, есть ли у кого-нибудь опыт выше?

ответ

0

Ну, если вы согласны пропустить «чистый» NMS api и получить доступ к классам ActiveMQ, вы можете получить дескриптор MemoryStream через общедоступное свойство Content. Там может быть сжатие, с которым вам нужно иметь дело.

    ITextMessage msg = consumer.Receive() as ITextMessage; 
        ActiveMQTextMessage tmsg = msg as ActiveMQTextMessage; 
        Stream stream = new MemoryStream(tmsg.Content); 

        if(tmsg.Compressed == true) 
        { 
         stream = tmsg.Connection.CompressionPolicy.CreateDecompressionStream(stream);        
        } 

        // TODO read MemoryStream to whatever 

 Смежные вопросы

  • Нет связанных вопросов^_^