当我收到 aActiveMQBytesMessage
时,该Content
属性具有完全预期的长度,但所有字节都为零,它看起来像一个具有正确长度的未初始化缓冲区。
我还尝试ReadBytes(buffer, length)
了消息对象,并得到了相同的空缓冲区。
我很确定消息正确地到达了代理,因为我可以通过 ActiveMQ Web 界面查看消息的 XML 表示,在那里我可以看到正确的 Base64 表示<content><data>
我正在使用最新版本 1.5.6。
有什么想法我可能做错了吗?
更新
在使用发布者发送消息之前如何创建消息:
var binMessage = new ActiveMQBytesMessage();
binMessage.Content = /* ... */
这是 Web 界面(队列浏览器)上消息的样子:
<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 等)。