我创建了一个网关和一个轮询通知通道,网关用来路由消息。我希望服务激活器从频道进行调查并做事。但是我似乎无法理解一些有关春季整合的事情。
在这种情况下,我们需要一个IntegrationFlow Bean吗?会呼叫网关方法只会发送消息槽频道,而服务激活器可以在有新消息时自动进行轮询?
ConfigurationClass:
@EnableIntegration
@Configuration
@IntegrationComponentScan
class IntegrationConfiguration {
@Bean
fun notificationChannel(): MessageChannel {
return MessageChannels.queue().get()
}
@Bean
fun integrationFlow(): IntegrationFlow {
TODO()
}
}
网关:
@MessagingGateway(defaultRequestChannel = "notificationChannel")
@Component
interface NotificationGateway {
fun sendNotification(bytes: ByteArray)
}
服务:
@Service
class NotificationService {
@ServiceActivator(inputChannel = "notificationChannel")
fun sendNotification(bytes: ByteArray) {
TODO()
}
}
我是春季整合的新手,并且有一个艰难的时期,因为我找不到有关我的知识水平的可理解的文档,尤其是在春季集成DSL上。
我的主要问题可能是我现在了解IntegrationFlow Bean的使用
对于像您这样的简单用例,您确实不需要IntegrationFlow
。您现在拥有的简单@ServiceActivator
足以处理notificationChannel
的消息。您需要的只是@Poller
,因为@ServiceActivator
配置是notificationChannel
是PollableChannel
,而不是可订阅的。
有关更多信息,请参见参考手册:https://docs.spring.io/spring-integration/docs/current/current/referent/html/#configuration-using-poller-using-poller-annotation
还要注意文档开头的段落:https://docs.spring.io/spring-integration/docs/current/current/referent/html/#programprogramming-considming