Azure与服务总线一起使用,因为输出绑定不起作用

时间:2018-08-02 11:26:26

标签: node.js azure azure-functions azureservicebus

我正在尝试通过Java的Azure函数中的输出绑定将消息发送到服务总线。

我正在使用azure函数cli在本地进行测试,并像往常一样将主机启动为func host start

我的设置是这样的:

function.json

{
  "disabled": false,

  "bindings": [
    {
      "authLevel": "function",
      "type": "httpTrigger",
      "direction": "in",
      "name": "req",
      "methods": [
        "put"
      ]
    },
    {
      "type": "serviceBus",
      "name" : "locationQueue",
      "queueName": "location_queue",
      "direction": "out",
      "accessRights": "Manage",
      "connection": "service-bus_CONNECTION"
    },
    {
      "type": "http",
      "direction": "out",
      "name": "res"
    }
  ]
}

函数经过一定的承诺如下所示:

.then( () => {
        var message = {
            userID : userID,
            lat: userCurrentLocation.lat,
            long: userCurrentLocation.long,
            time: new Date()
        };
        context.bindings.locationQueue = [JSON.stringify(message)];
        context.res = {
            status: 200,
            body: ''
        }
        context.done();
    })
    .catch( (err) => {
        console.error("Error while trying to update userID %s location.", userID, err)
        context.res = {
            status: 500,
            body: ''
        }
        context.done();
    })

请求成功结束,状态代码为200。

连接字符串是由azure门户生成的,似乎正在连接,因为我测试时仪表板会显示新的连接。我什至试图输入错误的连接字符串,但函数主机根本没有抱怨!

但是未创建队列,也没有发送消息。我尝试自己创建队列,消息也未发送。

发生了什么事?我做错了什么?而且,如果我做错了什么,即使在日志中也不会收到错误消息?我的意思是,如果没有发送消息并且没有记录任何错误,我怎么能相信一切正确?

0 个答案:

没有答案