我的应用程序应该将某个事件从组件传播到某个rabbit消息发布者。
我的组件使用ApplicationEventPublisher.publishEvent(e)
触发事件
另一方面,消息生产者应该接收事件,处理它,然后将它发布到rabbit队列。
我正在使用spring cloud stream和spring cloud function用于消息传递部分:
@Configurationn
MessagingConfig {
@Autowired
StreamBridge sb;
@EventListener
void handleEvent(Event e){
sb.send("topic", e)
}
有没有靠功能而不是StreamBridge
@Bean
Supplier<Event> messageProducer(){
//Get the event and publish it
}
或将ApplicationEventListener视为绑定器
Function<Event, Event> messageProcessor(){
// redirect event to rabbit binder
}
我很困惑,谢谢你的帮助。
1条答案
按热度按时间lyr7nygr1#
@EventListener
和StreamBridge
的组合是完成任务的一种更简单的方法。对于Supplier
变体,您需要一些中间缓冲区(Flux
?)来放置事件。而Flux.create()
API可能会涉及到这一点:www.example.com网站。https://projectreactor.io/docs/core/release/reference/#producing.create.可以使用Spring Integration
ApplicationEventListeningMessageProducer
捕获这些事件,并将它们生成到绑定的MessageChannel
。