Azure 服务总线队列在 NodeJs 中向 .NET 客户端发送消息
Azure Service Bus Queue sending a message in NodeJs to .NET client
我正在从一个 C# worker 向队列发送一条消息,然后我在另一个 C# worker 上获取它并调用
string body = message.GetBody<string>();
这行得通,我稍后反序列化了 string/JSON 消息。
现在我正尝试以 JSON 消息的形式从 NodeJS 发送相同的消息。当我尝试接收它时
string body = message.GetBody<string>();
调用这个我得到一个异常,说输入的格式不正确。
我在 NodeJS 上的消息对象如下所示
{
body: JSON.stringify(message)
}
有什么想法吗?
已修复!
默认情况下,.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# 代码完全兼容。
我正在从一个 C# worker 向队列发送一条消息,然后我在另一个 C# worker 上获取它并调用
string body = message.GetBody<string>();
这行得通,我稍后反序列化了 string/JSON 消息。
现在我正尝试以 JSON 消息的形式从 NodeJS 发送相同的消息。当我尝试接收它时
string body = message.GetBody<string>();
调用这个我得到一个异常,说输入的格式不正确。
我在 NodeJS 上的消息对象如下所示
{
body: JSON.stringify(message)
}
有什么想法吗?
已修复!
默认情况下,.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# 代码完全兼容。