我使用azure函数将消息从eventub保存到azure表。但是我被一些编码问题卡住了。
我的场景是一个进程发送一个ascii编码缓冲区到eventhub,然后azure函数将其保存到表中。然而,azure函数从eventub获取参数变成了UTF8字符串。这会导致一些无效的UTF8字节松动。
现在我怀疑我能不能用以下两种方法来解决这个问题:
- 绑定设置可以让从eventub到azure函数的触发器参数是缓冲区而不是字符串吗?这里我从nodejs模板开始。
- 或者,绑定允许对象使用特定编码的字符串。然后我可以重新构建缓冲区。
或者有其他更好的方法来解决这个问题?
绑定支持字节数组。下面是一个c#示例:
using System;
using System.Text;
public static void Run(byte[] myEventHubMessage, TraceWriter log)
{
string s1 = Encoding.UTF8.GetString(myEventHubMessage);
log.Info($"C# Event Hub trigger function processed a message: {s1}");
}
对于Node,将数据类型设置为二进制。样本函数。json
{
"bindings": [
{
"type": "httpTrigger",
"name": "req",
"direction": "in",
"dataType": "binary"
},
{
"type": "http",
"name": "res",
"direction": "out"
}
]
}
对应index.js: module.exports = function (context, req) {
var body = req.body;
context.log("TestResult:", {
isBuffer: Buffer.isBuffer(body),
length: body.length
});
context.res = {
status: 200,
body: "Success!"
};
context.done();
}
希望这对你有帮助!