SpringCloud Spring Integration支持
2023-11-25 09:15 更新
Spring Cloud Stream建立在Enterprise Integration Patterns定义的概念和模式的基础之上,并依靠其内部实现依赖于Spring项目组合 Spring Integration 框架中已经建立且流行的Enterprise Integration Patterns实现 。
因此,它支持Spring Integration已经建立的基础,语义和配置选项是很自然的。
例如,您可以将Source
的输出通道附加到MessageSource
并使用熟悉的@InboundChannelAdapter
注释,如下所示:
@EnableBinding(Source.class) public class TimerSource { @Bean @InboundChannelAdapter(value = Source.OUTPUT, poller = @Poller(fixedDelay = "10", maxMessagesPerPoll = "1")) public MessageSource<String> timerMessageSource() { return () -> new GenericMessage<>("Hello Spring Cloud Stream"); } }
同样,可以在提供处理器绑定合同的消息处理程序方法的实现时使用@Transformer或@ServiceActivator ,如以下示例所示:
@EnableBinding(Processor.class) public class TransformProcessor { @Transformer(inputChannel = Processor.INPUT, outputChannel = Processor.OUTPUT) public Object transform(String message) { return message.toUpperCase(); } }
尽管这可能会略过一些,但重要的是要了解,当您使用@StreamListener
注释从同一绑定进行消费时,将使用pub-sub模型。用@StreamListener
注释的每种方法都收到其自己的消息副本,并且每种方法都有其自己的使用者组。但是,如果通过使用Spring Integration批注之一(例如@Aggregator
,@Transformer
或@ServiceActivator
)从同一绑定中消费,则这些消费在竞争模型中。没有为每个订阅创建单独的消费者组。
以上内容是否对您有帮助:
更多建议: