当前位置: 首页 > 知识库问答 >
问题:

Spring Cloud Stream服务总线绑定的错误通道

漆雕育
2023-03-14

我正在尝试为SpringCloudAzure服务总线队列流绑定器配置错误通道,但未成功。我已通过启用错误通道

spring:
  cloud:
    stream:
      function:
        definition: produce
      bindings:
        produce-out-0:
          destination: service-bus-q-a
          producer:
            error-channel-enabled: true

并尝试定义一个@ServiceActivator

@ServiceActivator(inputChannel = "service-bus-q-a.errors")
public void errors(ErrorMessage receiveMsg) {
    System.err.println("receive error msg: " + receiveMsg);
}

我还尝试了inputChannel=“errorChannel”inputChannel=“service-bus-q-a.$Default.errors”。显然,我在这里遗漏了一些东西,但我找不到一个有效的例子。

编辑:我正在使用以下供应商bean:

@Bean
Supplier<String> produce() {
    return () -> {
        String msg = "a message to produce";
        LOG.info("Producing message: " + msg);
        return msg;
    };
}

根据绑定命名约定,绑定的名称将为product-out-0。我可以看到消息确实发送到了service-bus-q-a(另一侧有一个消费者)。

编辑和解决方案:

看来我的环境出了问题,重建后一切都如期进行,正如Garry Russell的回答所示。对不起,耽误了你的时间。对子孙后代来说,这正是我的工作:

声明绑定时

spring:
  cloud:
    stream:
      bindings:
        produce-out-0:
          destination: service-bus-q-a
          producer:
            error-channel-enabled: true

将要创建的错误通道将命名为{destination}。错误,在本例中为service-bus-q-a.errors。此外,如果发生错误,还将调用全局错误通道errorChannel。所以你可以用任何一个

@ServiceActivator(inputChannel = "service-bus-q-a.errors")
public void errors(ErrorMessage receiveMsg) {
    System.err.println("receive error msg: " + receiveMsg);
}

要接收来自service-bus-q-a

@ServiceActivator(inputChannel = "errorChannel")
public void errors(ErrorMessage receiveMsg) {
    System.err.println("receive error msg: " + receiveMsg);
}

从全局错误通道接收错误。

共有1个答案

酆耀
2023-03-14

我刚刚用这个yaml测试了它,它的属性是true

spring:
  cloud:
    stream:
      bindings:
        output:
          producer:
            error-channel-enabled: true
    azure:
      servicebus:
        connectionString: Endpoint=sb://foo.bar

你确定你的生产者名称(product-out-0)是正确的吗?

 类似资料:
  • 我正在尝试实现涡轮AMQP,以合并从多个服务到Hystrix仪表板的所有流。

  • 我正在尝试绑定到Azure服务总线触发函数中的。 我的目标是处理死信队列消息并完成它们。 问题是它无法绑定到MessageReceiver类。 微软蔚蓝色的网络作业。主机:错误索引方法“Function1”。微软蔚蓝色的网络作业。主机:无法将参数“receiver”绑定到类型MessageReceiver。确保绑定支持参数类型。如果您使用的是绑定扩展(例如Azure Storage、Service

  • 有人能解释一下新发布的WindowsServiceBus(内部部署,而不是Azure)和NServiceBus之间的区别吗? 寻找详细的答案什么窗口SB可能会丢失,因为我很熟悉NSErviceBus可以做什么: 它是真正的服务总线,而不仅仅是使用队列的消息代理吗? 是否可以支持消息多态?(消息子类化其他消息和支持此层次结构的处理程序 长时间运行的进程和相关性 向外扩展

  • 我正在尝试在我的逻辑应用程序中使用Service Bus Queue send操作,该应用程序向队列发送消息。逻辑应用程序运行时,操作返回此错误: 尽管在创建队列时,我没有启用自动转发。有什么帮助吗?

  • 我想在Azure中托管的服务Fabric集群和我的专用网络之间设置一个Azure服务总线中继。 我无法使服务总线中继的配置从服务Fabric WCF服务工作。

  • 在应用程序运行时,我遇到了以下错误:System. Windows. Data Error: 4:找不到引用“RelativeSource FindAncestor, AncestorType=‘System. Window. Control. ItemsControl’, AncestorLine=‘1’的绑定源。Binding表达式:路径=HorizontalContent的对齐;数据项=空;