Azure Service Bus Queue将NodeJ中的消息发送到.NET客户端

Dan*_*din 0 c# azure node.js azureservicebus azure-servicebus-queues

我正在从C#worker向Queue发送一条消息,然后我在另一个C#worker上调用它

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

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

现在我试图以JSON消息的形式从NodeJS发送相同的消息.当我试图接收它时

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

我称之为输入格式不正确的例外情况.

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

{
  body: JSON.stringify(message)
}
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Dan*_*din 5

修好了!

默认情况下,.NET Azure Queue库使用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#代码完全兼容.