我正在尝试利用Spring Data提供的@DomainEvents
机制来发布Spring Cloud Stream事件(Spring Boot 2.0.0.M7和Finchley.M5)。我有一个由两部分组成的问题。
SendTo
无效EventListeners
?正在创建DomainEvent
并将EventListener
发送给SendTo
。问题是Message
机制似乎没有起作用。下面的第一种方法会触发,但不会转发消息。手动构建@Async
@TransactionalEventListener
@SendTo(Sink.Output)
StreamedEvent handleEventWithSendTo(MyEvent event) {
// handle and create event
}
@TransactionalEventListener
void handleEvent(MyEvent event) {
// handle and create event
sink.output().send(MessageBuilder.withPayload(payload).build())
}
并按第二种方法显示的方式发送它可以正常工作。
SendTo
Spring Cloud Stream文档中的标注显示在StreamListener
上使用EventListener
,这与DomainEvents
不完全相同,但我认为可能工作
对于第二部分,使用Entity
要求持久registerEvent
的服务代码了解该事件(直接调用Entity
或PreUpdate
上的某些方法代表事件)。我很好奇,如果使用Spring Data回调挂钩(例如PostUpdate
,user: User
this.httpService.getCurrentUser()
.subscribe(
data => {
this.user = JSON.parse(data["_body"]).value[0];
console.log("1" +this.user)
},
error => console.error(error)
);
console.log("2"+this.user);
)会更好。或者如果有更好的方式在一起。