javascript - วิธีส่งออกไปยัง servicebus จากฟังก์ชันที่ถูกทริกเกอร์ด้วย http
เราจะผูกผลลัพธ์กับ service bus ได้อย่างไร?
ฉันได้ตั้งค่า out binding ภายในฟังก์ชัน Azure ของฉัน:
{
"queueName": "testqueue",
"connection": "MyServiceBusConnection",
"name": "myQueueItem",
"type": "serviceBus",
"direction": "out"
}
ฉันได้เริ่มต้นด้วยเทมเพลตมาตรฐานของ JavaScript/TypeScript สำหรับฟังก์ชัน:
export function run(context: any, req: any): void {
context.log("TypeScript HTTP trigger function processed a request.");
context.log(req.query);
context.bindings.outputSbQueue = req.query; //should bind here
if (req.query.name || (req.body && req.body.name)) {
context.res = {
// status: 200, /* Defaults to 200 */
body: {
message: `Hello ${(req.query.name || req.body.name)}`
}
};
} else {
context.res = {
status: 400,
body: "Please pass a name on the query string or in the request body"
};
}
context.done();
};
ฉันได้รับการตอบกลับจากฟังก์ชัน แต่ไม่มีอะไรเข้าไปใน service bus
ฉันได้ตั้งค่าการตั้งค่าแอปของฉันสำหรับ MyServiceBusConnection เรียบร้อยแล้ว ตามที่พอร์ทัลแสดง:
ฉันทำอะไรผิดหรือ? เราจะเชื่อมต่อเอาต์พุตกับ service bus ได้อย่างไร?
นี่คือไฟล์ function.json ทั้งหมด:
{
"disabled": false,
"bindings": [
{
"authLevel": "anonymous",
"type": "httpTrigger",
"direction": "in",
"name": "req"
},
{
"type": "http",
"direction": "out",
"name": "res"
},
{
"queueName": "testqueue",
"connection": "MyServiceBusConnection",
"name": "myQueueItem",
"type": "serviceBus",
"direction": "out"
}
],
"scriptFile": "../dist/HttpTriggerTS/index.js"
}
คำตอบ #1
ทำไมชื่อของ binding ของคุณ (myQueueItem) ถึงต่างจากวิธีที่คุณเรียกมันในโค้ด (context.bindings.outputSbQueue)?
คำตอบ #2
ตัวอย่างต่อไปนี้แสดงการผูกเอาต์พุตของ Service Bus ในไฟล์ function.json และฟังก์ชัน JavaScript ที่ใช้การผูกนี้ ฟังก์ชันใช้ทริกเกอร์ตัวจับเวลาส่งข้อความคิวทุก 15 วินาที
นี่คือข้อมูลการเชื่อมโยงในไฟล์ function.json:
{
"bindings": [
{
"schedule": "0/15 * * * * *",
"name": "myTimer",
"runsOnStartup": true,
"type": "timerTrigger",
"direction": "in"
},
{
"name": "outputSbQueue",
"type": "serviceBus",
"queueName": "testqueue",
"connection": "MyServiceBusConnection",
"direction": "out"
}
],
"disabled": false
}
และนี่คือโค้ดตัวอย่าง JS
module.exports = function (context, myTimer) {
var message = 'Service Bus queue message created at ' + timeStamp;
context.log(message);
context.bindings.outputSbQueue = message;
ตามที่ Farrukh ชี้ให้เห็น โปรดตรวจสอบให้แน่ใจว่าคุณกำลังใช้ชื่อที่ถูกต้องใน binding และในโค้ด (outputSbQueue)
หวังว่าจะช่วยได้นะ
