2015-11-23 27 views
0

我从一个C#工人将消息发送到队列,然后我得到它的另一个C#的工人,并呼吁Azure的服务总线队列中的NodeJS将消息发送到.NET客户端

string body = message.GetBody<string>();

这工程,我后来反序列化字符串/ JSON消息。

现在我试图从一个JSON消息的形式发送相同的消息从NodeJS。当我尝试接受它,并

string body = message.GetBody<string>();

调用此我得到一个异常说的输入格式不正确。

在我的NodeJS消息对象,看起来像这样

{ 
    body: JSON.stringify(message) 
} 

任何想法?

回答

5

修好了!

默认情况下,.NET Azure的队列库使用的DataContractSerializer和二进制的XmlDictionaryWriter序列化字符串消息使用

new BrokeredMessage("my message");

时,因此,你需要使用这个

new BrokeredMessage(new MemoryStream(Encoding.UTF8.GetBytes("my message")), true);

并阅读C#中的消息,您需要使用

string body = new StreamReader(message.GetBody<Stream>(), Encoding.UTF8).ReadToEnd();

我也停止将我的JSON.stringify消息包装在一个对象中,并将其直接传递给sendQueueMessage。发送消息的代码看起来现在这个样子:

serviceBusService.sendQueueMessage('my_queue', JSON.stringify("my message"), function(error){});

JSON.stringify输出UTF8字符串所以它与C#代码完全兼容。

相关问题