根据本文档,应该可以订阅Spring Integration提供的全局错误通道--“ErrorChannel”。
在我这个非常简单的例子中,它不起作用:
应用:
@SpringBootApplication
@EnableBinding({MySink.class})
public class LoggingConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(LoggingConsumerApplication.class, args);
}
@StreamListener(target = MySink.INPUT_ONE)
public void handle(Person person) {
System.out.println("Received: " + person);
if(StringUtils.isEmpty(person.getName())){
throw new RuntimeException("Wrong person name!");
}
}
@ServiceActivator(inputChannel = "mySink.mySink-group.errors")
public void error(Message<?> message) {
System.out.println("Handling ERROR: " + message);
}
@ServiceActivator(inputChannel = "errorChannel")
public void errorGlobal(ErrorMessage message) {
System.out.println("Handling ERROR GLOBAL SA: " + message);
}
@StreamListener("errorChannel")
public void errorGlobalListener(ErrorMessage message) {
System.out.println("Handling ERROR GLOBAL Listener: " + message);
}
public static class Person {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String toString() {
return this.name;
}
}
}
public interface MySink {
/**
* Input channel name.
*/
String INPUT_ONE = "inputOne";
/**
* @return input channel.
*/
@Input(MySink.INPUT_ONE)
SubscribableChannel inputOne();
}
spring.rabbitmq.host=192.168.0.100
spring.cloud.stream.bindings.inputOne.destination=mySink
spring.cloud.stream.bindings.inputOne.group=mySink-group
没有任何问题,它正在按预期工作。doc中:“订阅名为input的通道的handle(..)方法引发异常。如果还有错误通道input.mygroup.errors的订阅者,则所有错误消息都由该订阅者处理。”因此,这意味着您的错误可以通过绑定特定错误处理程序(mysink.mysink-group.errors
)或全局(errorchannel
)来处理。
https://cloud.spring.io/spring-cloud-static/spring-cloud-stream/2.2.0.release/spring-cloud-stream.html#spring-cloud-stream-overview-error-handling
我正在尝试通过SCSt频道构建并获取KTable。但这并不奏效。输入KTable没有数据,但如果我尝试查看KSTream聚合(toStream()),我可以看到一些数据。我明白了,KTable是不可查询的,它没有可查询的名称。 类别: 绑定: application.yml:
我正在尝试在Spring云数据流中配置DLQ。下面是流定义以及我如何部署它 在自定义转换处理器代码中,我已经提到过 这意味着若消息包含错误,那个么RunTimeException和我想在DLQ中捕获这些消息。但当我运行代码时,似乎没有得到任何名为test tran的Kafka DL队列。 我是否需要设置更多属性来启用DLQ,还是需要更改代码中的某些内容以正确使用DLQ。 自定义转换代码 Trans
我用Artemis绑定器设置了一个Spring云流https://github.com/snowdrop/spring-cloud-stream-binder-artemis.我有两个应用程序,即生产者和消费者。下面是我的application.yml配置 制作人配置 消费者配置 一切正常,即生产者向队列发送数据,消费者能够处理数据,但不反映并发性。当我检查Artemis控制台时,我看到只有一个消
我无法使用功能供应商发送Avro消息。SCSt尝试将消息作为JSON发送,但失败。有人能指出是否需要任何其他配置吗? 这是供应商的功能bean 和配置
现在我正在尝试用kafka创建消息服务功能以使用< code > spring-cloud-stream-bind-Kafka ,但效果不太好。 Spring罩1.4.2 当我使用此错误日志启动项目时失败 我在怀疑我的春靴版本。这么低配的版本。< br >我认为< code > spring-cloud-stream-binder-Kafka 在spring boot 2.0版本下无法使用或者其他
我使用Spring Stream云来消费Kafka上的消息。当Kafka上的信息产生时,所有的消费者都受到了冲击。 但Kafka的文献表明,通过使用群体,只有一个消费者消费信息。 这是我的消费代码。 这是我的配置,但我的两个方法都调用了:(