Spring Boot 使用函数将应用程序事件转发到RabbitMQ

c86crjj0  于 2023-02-19  发布在  Spring
关注(0)|答案(1)|浏览(132)

我的应用程序应该将某个事件从组件传播到某个rabbit消息发布者。
我的组件使用ApplicationEventPublisher.publishEvent(e)触发事件
另一方面,消息生产者应该接收事件,处理它,然后将它发布到rabbit队列。
我正在使用spring cloud streamspring 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
}

我很困惑,谢谢你的帮助。

lyr7nygr

lyr7nygr1#

@EventListenerStreamBridge的组合是完成任务的一种更简单的方法。对于Supplier变体,您需要一些中间缓冲区(Flux?)来放置事件。而Flux.create() API可能会涉及到这一点:www.example.com网站。https://projectreactor.io/docs/core/release/reference/#producing.create.
可以使用Spring Integration ApplicationEventListeningMessageProducer捕获这些事件,并将它们生成到绑定的MessageChannel

相关问题