我有一个源,它通过默认的output
频道将消息发送到流中的处理器。现在我想还通过不同的频道发送失败消息。
我想我应该创建一个从Source
扩展的可绑定接口,并使用@Output
添加额外的通道。如何确保SCDF实际为此频道创建Kafka主题? IOW,流定义会是什么样的?
E.g。
的内容 source | processor | sink
source > error-sink
source | processor
使用常规output
频道/ Kafka主题,source > error-sink
使用其他频道/主题。
答案 0 :(得分:1)
如果需要跟踪下游处理的错误消息,则可以使用与Spring Cloud Stream关联的OOTB DLQ机制。 Rabbit和Kafka都支持此功能。您可以在Spring Cloud Data Flow(SCDF)中启用DLQ作为global setting或基于每个流。
如果您仍喜欢定义自定义渠道以便以不同方式处理邮件,则您必须创建类似于此sample的自定义界面。
在SCDF中部署流时,您可以分别通过spring.cloud.stream.kafka.bindings.<channelName>.producer
和spring.cloud.stream.kafka.bindings.<channelName>.consumer
绑定属性覆盖生产者和消费者之间的目标。
修改强>
虽然有上述方法,但我从Spring Cloud Stream导致了解了一个更简单的解决方案(@ marius-bogoevici)。
已有一个可供使用的默认错误通道,而Spring Integration支持它。
这样,在您的应用中,您可以通过以下方式将自定义消息发送到默认错误频道:@Autowire @Qualifier("errorChannel")
。事实上,这种支持也可用于所有OOTB应用程序。
然后,您可以通过以下方式覆盖此错误频道的目的地:spring.cloud.stream.bindings.error.destination=errorchannel-test
。在SCDF中,您可以在流媒体部署时通过:--properties
传递此内容。
例如:
stream create foo --definition&#34; mysource |登录&#34;
stream deploy foo --properties&#34; app.mysource.spring.cloud.stream.bindings.error.destination = errorchannel-test&#34;