【问题标题】:Cannot bind to MessageReciever in Azure ServiceBus function无法绑定到 Azure ServiceBus 函数中的 MessageReciever
【发布时间】:2020-09-03 00:34:37
【问题描述】:

我已经尝试了我可以在网络上找到的所有示例,以及任何形式的尝试:

Message消息,字符串lockToken,MessageReceiver messageReceiver,ILogger日志)

使用 MessageReceiver 或底层接口,我收到此错误:

Microsoft.Azure.WebJobs.Host:无法将参数“messageReceiver”绑定到类型“Microsoft.ServiceBus.Messaging.MessageReceiver”。

我尝试将其设置为使用 Lazy 界面进行注入,但没有成功。

我正在使用 [ServiceBusTrigger]

【问题讨论】:

  • 你能显示代码吗?
  • 您在 Azure 中配置了哪个版本的 Functions SDK?

标签: azure azureservicebus


【解决方案1】:

在我这边似乎没问题。

请检查:

Function1.cs

using System;
using Microsoft.Azure.ServiceBus.Core;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
using Microsoft.Extensions.Logging;

namespace FunctionApp16
{
    public static class Function1
    {
        [FunctionName("Function1")]
        public static void Run([ServiceBusTrigger("myqueue", Connection = "str")]string myQueueItem, ILogger log, MessageReceiver messageReceiver, string lockToken)
        {
            messageReceiver.RenewLockAsync(lockToken);
            log.LogInformation($"C# ServiceBus queue trigger function processed message: {myQueueItem}");
        }
    }
}

ProjectName.csproj

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <AzureFunctionsVersion>v3</AzureFunctionsVersion>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.Azure.WebJobs.ServiceBus" Version="3.0.0-beta8" />
    <PackageReference Include="Microsoft.NET.Sdk.Functions" Version="3.0.7" />
  </ItemGroup>
  <ItemGroup>
    <None Update="host.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
    <None Update="local.settings.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
      <CopyToPublishDirectory>Never</CopyToPublishDirectory>
    </None>
  </ItemGroup>
</Project>

就我而言,MessageReceiver 来自命名空间Microsoft.Azure.ServiceBus.Core

发送消息:

from azure.servicebus import ServiceBusClient
from azure.servicebus import QueueClient, Message

str = "Endpoint=sb://testbowman.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=xxxxxx"
queue_client = QueueClient.from_connection_string(str, "myqueue")
msg = Message('Test Message')
queue_client.send(msg)
print('Already send.')

返回没有错误:

【讨论】:

  • 谢谢,最后我必须得到完全正确的名称,而不是使用 BrokeredMessage。感谢您的帮助
  • 但是我觉得messagereciever 不起作用,我需要使用界面
猜你喜欢
  • 2020-12-08
  • 1970-01-01
  • 2021-08-16
  • 2018-07-05
  • 2023-03-07
  • 2023-04-09
  • 2021-12-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多