Azure 函数的绑定是否可以允许消息作为缓冲区或使用特定编码传递



我使用azure函数将消息从eventub保存到azure表。但是我被一些编码问题卡住了。

我的场景是一个进程发送一个ascii编码缓冲区到eventhub,然后azure函数将其保存到表中。然而,azure函数从eventub获取参数变成了UTF8字符串。这会导致一些无效的UTF8字节松动。

现在我怀疑我能不能用以下两种方法来解决这个问题:

  1. 绑定设置可以让从eventub到azure函数的触发器参数是缓冲区而不是字符串吗?这里我从nodejs模板开始。
  2. 或者,绑定允许对象使用特定编码的字符串。然后我可以重新构建缓冲区。

或者有其他更好的方法来解决这个问题?

绑定支持字节数组。下面是一个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();
}

希望这对你有帮助!

最新更新