【问题标题】:Is MessageReceiver supported in Service Bus Topic Triggered Java Azure Function?服务总线主题触发的 Java Azure 函数是否支持 MessageReceiver?
【发布时间】:2020-07-30 02:09:38
【问题描述】:

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

   @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() 方法,以便在锁定持续时间结束后消息不会出现死信。

【问题讨论】:

    标签: java azure azure-functions azure-servicebus-topics


    【解决方案1】:

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

    但是您仍然可以通过将host.json 中的extensions.serviceBus.messageHandlerOptions.autoComplete 属性值设置为true 来实现“破坏性读取”(又名ReceiveAndDelete)。

    【讨论】:

    • 感谢您的帮助!我认为 autoComplete 属性默认设置为 true,它将在函数退出后将消息标记为完成(反对在函数开始执行后立即将消息标记为完成)。
    猜你喜欢
    • 2020-05-03
    • 1970-01-01
    • 1970-01-01
    • 2021-09-28
    • 2019-12-16
    • 2013-06-06
    • 2020-10-11
    • 1970-01-01
    • 2018-06-03
    相关资源
    最近更新 更多