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

yui*_*hou 2 azure azure-functions

我使用azure函数将消息从eventhub保存到azure表.但我被一些编码问题困扰了.

我的场景是一个进程是向eventhub发送一个ascii编码缓冲区,然后将azure函数保存到表中.
但是,eventhub中的azure函数get参数变为UTF8字符串.这会导致一些无效的UTF8字节松散.

现在我怀疑我可以通过以下两种方式解决问题:

  1. 绑定设置是否可以将触发器的参数从eventhub转换为azure函数,而不是字符串.在这里,我开始使用nodejs模板.
  2. 或者,绑定使对象具有特定编码的字符串.然后我可以重新构建缓冲区.

或者有另一种更好的方法来解决这个问题?

Pra*_*opa 8

绑定支持字节数组.这是一个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}");
}
Run Code Online (Sandbox Code Playgroud)

并且对于Node,将数据类型设置为二进制.示例function.json

{
     "bindings": [
        {
            "type": "httpTrigger",
            "name": "req",
            "direction": "in",
            "dataType": "binary"
        },
        {
            "type": "http",
            "name": "res",
            "direction": "out"
        }
      ]
    }
Run Code Online (Sandbox Code Playgroud)

对应的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();
}
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!