首页 > 解决方案 > 服务总线主题触发的 Java Azure 函数是否支持 MessageReceiver?

问题描述

基本上是标题。这是我的代码

   @FunctionName("Process")
public void run(@ServiceBusTopicTrigger(
        name = "req",
        topicName = TemplatedConstants.topicName,
        subscriptionName = TemplatedConstants.subscriptionName,
        connection = "ServiceBusConnectionString")
                    @BindingName("MessageReceiver") MessageReceiver messageReceiver,  String message, final ExecutionContext context) {

我正在尝试将 MessageReceiver 注入 Java Azure 函数,但出现以下错误。

“com.microsoft.azure.servicebus.MessageReceiver”在“com.microsoft.azure.servicebus”中不公开。无法从外部包访问

我的目标是以“破坏性阅读”模式而不是默认的“窥视锁定”模式阅读消息。我希望在收到消息后立即调用 MessageReceiver 对象上的 .complete() 方法,以便在锁定持续时间结束后消息不会出现死信。

标签: javaazureazure-functionsazure-servicebus-topics

解决方案


不幸的是,Azure Functions 中的非 C# 语言不支持绑定到特定于复杂语言的类型。您必须在需要时直接使用 SDK。

但是您仍然可以属性值设置为in来实现“破坏性读取”(又名ReceiveAndDelete)。extensions.serviceBus.messageHandlerOptions.autoCompletetruehost.json


推荐阅读