我正在尝试通过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门户生成的,似乎正在连接,因为我测试时仪表板会显示新的连接。我什至试图输入错误的连接字符串,但函数主机根本没有抱怨!
但是未创建队列,也没有发送消息。我尝试自己创建队列,消息也未发送。
发生了什么事?我做错了什么?而且,如果我做错了什么,即使在日志中也不会收到错误消息?我的意思是,如果没有发送消息并且没有记录任何错误,我怎么能相信一切正确?