ค้นหาเว็บไซต์

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)

หวังว่าจะช่วยได้นะ