我正在尝试从 Java 接收 Azure 队列消息。我能够在 java 中使用 BrokeredMessage 接收消息。(我是java新手)。
我的问题是 message.getBody() 也返回了一些标题信息(不仅仅是我需要的消息)。
I get string3http://schemas.mi@string3http://schemas.microsoft.com/2003/10/Serialization/?? message appended with my body in front of it. How can I get rid of this header information.
而且我还注意到我分两批收到消息。(不是一次全部)
My first batch of message.getBody()returns below message
'@string3http://schemas.mi'
My Second batch of message.getBody()returns below message
@crosoft.com/2003/10/Serialization/?? + My actual message.
我的总消息大小小于 500B,但我已将字节大小设置为 4096。因此,由于大小问题,不是夹板。
这是我使用的接收器代码。
ReceiveMessageOptions opts = ReceiveMessageOptions.DEFAULT;
opts.setReceiveMode(ReceiveMode.PEEK_LOCK);
while (true)
{
ReceiveQueueMessageResult resultQM =
service.receiveQueueMessage("MyqueueName", opts);
BrokeredMessage message = resultQM.getValue();
if (message != null && message.getMessageId() != null)
{
byte[] b = new byte[4096];
String s = null;
int numRead = message.getBody().read(b);
while (-1 != numRead)
{
s = new String(b);
s = s.trim();
System.out.print(s);
numRead = message.getBody().read(b);
}
}
}
这是 System.out.print(s); 的总输出。(但正如我之前提到的,分两批)
total output
string3http://schemas.microsoft.com/2003/10/Serialization/??+ My actual message.
任何帮助深表感谢!