Когда я получаю ActiveMQBytesMessage
, свойство Content
имеет точно ожидаемую длину, но все байты равны нулю, он выглядит как неинициализированный буфер с правильной длиной.Содержимое в полученном ActiveMQBytesMessage пусто
Я также пробовал ReadBytes(buffer, length)
на объект сообщения и получил тот же пустой буфер.
Я уверен, что сообщения поступают правильно у брокера, потому что я могу смотреть в XML-представление сообщения через веб-интерфейс ActiveMQ, и я могу видеть правильное представление Base64 в <content><data>
Я использую последнюю версию 1.5.6.
Любые идеи, что я могу делать неправильно?
Update
Как создать сообщение перед его отправкой с помощью издателя:
var binMessage = new ActiveMQBytesMessage();
binMessage.Content = /* ... */
Это то, что сообщение выглядит как на веб-интерфейс (браузер очередей):
<org.apache.activemq.command.ActiveMQBytesMessage>
<commandId>5</commandId>
<!-- ... -->
<content>
<data>H4sIAN[...]AA=</data>
<offset>0</offset>
<length>305</length>
</content>
<!-- ... -->
</org.apache.activemq.command.ActiveMQBytesMessage>
Это то, что я в основном делаю в своих MessageListener
:
Console.WriteLine("Message ID: " + message.NMSMessageId);
var bytesMessage = message as IBytesMessage;
if (bytesMessage != null)
{
Console.WriteLine("Content length: " + bytesMessage.Content.Length);
Console.WriteLine("Content: " + BitConverter.ToString(bytesMessage.Content));
}
Это дает мне правильную длину содержимого, но фактическое содержимое просто пусто (шестнадцатеричный выход равен 00-00-00 и т. Д.).
Попробуйте добавить реальный код или более подробную информацию. Здесь недостаточно, чтобы действительно помочь вам. –
Большое спасибо за ваш быстрый ответ! Можете ли вы получить достаточно информации из обновленного вопроса? Обработка соединений, издателей, потребителей, сеансов и т. Д. Должна быть прекрасной, так как решение уже успешно обработало много миллионов текстовых сообщений :) Эта проблема возникла только при использовании Bytes Message. – realMarkusSchmidt