Java Spring云数据流服务总线绑定器的错误通道

Java Spring云数据流服务总线绑定器的错误通道,java,azureservicebus,spring-cloud-stream,Java,Azureservicebus,Spring Cloud Stream,我正在尝试为配置错误通道,但未成功。我已通过启用错误通道 spring: 云: 流: 功能: 定义:生产 绑定: 生成-out-0: 目的地:service-bus-q-a 制作人: 已启用错误通道:true 并尝试定义@ServiceActivator: @ServiceActivator(inputChannel=“service-bus-q-a.errors”) 公共无效错误(ErrorMessage receiveMsg){ System.err.println(“接收错误消息:+re

我正在尝试为配置错误通道,但未成功。我已通过启用错误通道

spring:
云:
流:
功能:
定义:生产
绑定:
生成-out-0:
目的地:service-bus-q-a
制作人:
已启用错误通道:true
并尝试定义
@ServiceActivator

@ServiceActivator(inputChannel=“service-bus-q-a.errors”)
公共无效错误(ErrorMessage receiveMsg){
System.err.println(“接收错误消息:+receiveMsg”);
}
我还尝试了
inputChannel=“errorChannel”
inputChannel=“service-bus-q-a.$Default.errors”
。显然,我在这里遗漏了一些东西,但我找不到一个有效的例子

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

@Bean
供应商产品(){
返回()->{
String msg=“要生成的消息”;
LOG.info(“生成消息:+msg”);
返回味精;
};
}
根据,绑定的名称将为
product-out-0
。我可以看到消息确实发送到了
service-bus-q-a
(另一侧有一个消费者)

编辑和解决方案:

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

在声明绑定时

spring:
云:
流:
绑定:
生成-out-0:
目的地:service-bus-q-a
制作人:
已启用错误通道:true
将要创建的错误通道将命名为
{destination}.errors
,在本例中为
service-bus-q-a.errors
。此外,如果发生错误,还将调用全局错误通道
errorChannel
。所以你可以用任何一个

@ServiceActivator(inputChannel=“service-bus-q-a.errors”)
公共无效错误(ErrorMessage receiveMsg){
System.err.println(“接收错误消息:+receiveMsg”);
}
service-bus-q-a
接收错误,或

@ServiceActivator(inputChannel=“errorChannel”)
公共无效错误(ErrorMessage receiveMsg){
System.err.println(“接收错误消息:+receiveMsg”);
}

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

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

spring:
云:
流:
绑定:
输出:
制作人:
已启用错误通道:true
蔚蓝:
服务总线:
connectionString:Endpoint=sb://foo.bar

您确定您的制作人名称(
product-out-0
)正确吗?

看起来他们最近才添加了对该名称的支持:。哦-看起来这只是消费者方面的问题。所以没有办法从生产者发送超时中恢复?对不起;我不知道;我不熟悉那个活页夹。你知道有没有一种非活页夹特定的方法来处理制作人错误吗?嗯-我只是查看了他们的代码,他们确实将
errorChannel
注入处理程序(),所以如果
error channel enabled
true
,它应该可以工作。尝试使用调试器。我已经用正在使用的supplier bean编辑了我的答案,我可以看到消息被发送到
service-bus-q-a
。如果您在错误频道
@ServiceActivator
中输入错误,它是否会在生产者发送超时时被调用?。另外,您使用的是什么
springcloudazureservicebus队列流绑定器
version?我用的是
1.2.3
1.2.3;但我没有一个真实的环境;我使用了一个虚拟连接字符串,只是为了测试布尔值是否被正确设置
isErrorChannelEnabled()
对于我来说仍然是真的,并且错误通道不为null,当我将测试更改为使用您的供应商bean,并将
product-out-0
作为绑定名称时。因此,如果您在调试器中仍然看到
null
错误通道,则看起来您的YAML没有被读取。您是对的,这是我的环境的问题。我已经用完整的解决方案更新了我的问题,我将您的答案标记为正确。谢谢,很抱歉浪费了你的时间。