服务总线输出绑定在 Azure 中不起作用

Posted

技术标签:

【中文标题】服务总线输出绑定在 Azure 中不起作用【英文标题】:Service Bus output binding is not working in Azure 【发布时间】:2021-05-20 16:42:43 【问题描述】:

我有一个 nodejs 应用程序。有 3 个函数和 2 个 HTTP 调用。

这是我用于 HTTP 路由的 function.json:


  "bindings": [
    
      "authLevel": "function",
      "type": "httpTrigger",
      "direction": "in",
      "name": "req",
      "methods": ["post"]
    ,
    
      "type": "http",
      "direction": "out",
      "name": "res"
    ,
    
      "name": "firstStep",
      "type": "serviceBus",
      "queueName": "firststepqueue",
      "connection": "MyServiceBus",
      "direction": "out"
    
  ],
  "scriptFile": "../dist/firstStep/index.js"

当我想绑定时在这里:

context.bindings.firstStep = message;
context.res = 
    status: 200,
    body: "message": "success",
    headers: 
        'Content-Type': 'application/json'
    
;
context.done();

但队列在 Azure 中不起作用。

当我运行 func start 时,它在我的本地工作。

没有错误!

【问题讨论】:

嗨,有更新吗? 【参考方案1】:

不需要指定脚本文件。

以下适用于我这边的本地和天蓝色:

index.js

module.exports = async function (context, req) 
    context.log('javascript HTTP trigger function processed a request.');

    var message = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
    context.log(message);   
    context.bindings.firstStep = message;
    context.res = 
        // status: 200, /* Defaults to 200 */
        body: "test"
    ;

function.json


  "bindings": [
    
      "authLevel": "anonymous",
      "type": "httpTrigger",
      "direction": "in",
      "name": "req",
      "methods": [
        "get",
        "post"
      ]
    ,
    
      "type": "http",
      "direction": "out",
      "name": "res"
    ,
    
      "name": "firstStep",
      "type": "serviceBus",
      "queueName": "firststepqueue",
      "connection": "MyServiceBus",
      "direction": "out"
    
  ]

local.settings.json


  "IsEncrypted": false,
  "Values": 
    "AzureWebJobsStorage": "",
    "FUNCTIONS_WORKER_RUNTIME": "node",
    "MyServiceBus":"Endpoint=sb://bowman1012.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=xxxxxx"
  

host.json


  "version": "2.0",
  "logging": 
    "applicationInsights": 
      "samplingSettings": 
        "isEnabled": true,
        "excludedTypes": "Request"
      
    
  ,
  "extensionBundle": 
    "id": "Microsoft.Azure.Functions.ExtensionBundle",
    "version": "[1.*, 3.1.0)"
  

Configuration Settings on Azure

【讨论】:

感谢您的回复,我需要定义“scriptFile”。因为我正在使用打字稿。当我没有 scriptFile 时,我得到 Microsoft.Azure.WebJobs.Script: 没有找到具有语言 [节点] 的函数。值不能为空。 (参数“提供者”)。

以上是关于服务总线输出绑定在 Azure 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

为服务总线中继绑定设置 Azure Service Fabric 侦听器

Azure 服务总线触发函数 - 绑定到 MessageReceiver

“MaxAutoRenewDuration”在 Azure 服务总线中的作用是啥?

总线刷新端点在春季云 Finchley.M8 中不起作用

带有事务的长期运行作业 Azure 服务总线的模式

从死信队列重新提交消息 - Azure 服务总线