【发布时间】:2016-02-06 04:00:04
【问题描述】:
我有一个 Java 应用程序和一个 NodeJS 应用程序都使用一个 Azure 服务总线消息队列。
我在客户身上看到了一些奇怪的效果,如下所示。
JAVA MESSAGE Producer(根据 Azure JMS 教程使用 QPID 库):
TextMessage message = sendSession.createTextMessage();
message.setText("Test AMQP message from JMS");
long randomMessageID = randomGenerator.nextLong() >>>1;
message.setJMSMessageID("ID:" + randomMessageID);
sender.send(message);
System.out.println("Sent message with JMSMessageID = " + message.getJMSMessageID());
输出: 发送消息 JMSMessageID = ID:2414932965987073843
NODEJS 消息消费者:
serviceBus.receiveQueueMessage(queue, {timeoutIntervalInS: timeOut, isReceiveAndDelete: true}, function(err, message) {
if(message !==null)console.log(util.inspect(message, {showHidden: false, depth: null}));
});
输出:
{ body: '@\u0006string\b3http://schemas.microsoft.com/2003/10/Serialization/�\u001aTest AMQP message from JMS',
brokerProperties:
{ DeliveryCount: 1,
EnqueuedSequenceNumber: 5000004,
EnqueuedTimeUtc: 'Wed, 04 Nov 2015 21:28:21 GMT',
MessageId: '2414932965987073843',
PartitionKey: '89',
SequenceNumber: 59672695067659070,
State: 'Active',
TimeToLive: 1209600,
To: 'moequeue' },
contentType: 'application/xml; charset=utf-8' }
如果我将其与通过 serviceBus.sendQueueMessage() 插入队列的消息进行比较,则属性如下所示:
{ body: 'test message',
brokerProperties:
{ DeliveryCount: 1,
EnqueuedSequenceNumber: 0,
EnqueuedTimeUtc: 'Wed, 04 Nov 2015 21:44:03 GMT',
MessageId: 'bc0a3d4f-15ba-434f-9fb0-1a3789885f8c',
PartitionKey: '734',
SequenceNumber: 37436171906517256,
State: 'Active',
TimeToLive: 1209600 },
contentType: 'text/plain',
customProperties:
{ message_number: 0,
sent_date: Wed Nov 04 2015 21:44:03 GMT+0000 (UTC) } }
所以内容类型一开始就不同 - 为什么? - 然后第一个消息有效负载正文中的奇怪垃圾来自哪里:@\u0006string\b3http://schemas.microsoft.com/2003/10/Serialization/�\u001a 这是序列化的结果吗?如何缓解这种情况?
在这里也可以找到代码: http://pastebin.com/T9RTFRBk
【问题讨论】:
标签: java node.js azure message-queue