我有一个简单的弹簧驱动服务,它通过amqp发布事件。 配置基于bootiful-axon。
现在我希望服务保持一些私有状态。这是一个简单的用例,可以通过3个额外的事件来实现。这些事件在服务范围之外没有任何意义,所以我不希望他们离开"离开"。
如何指定应通过amqp发布哪些事件?哪些事件不是?
答案 0 :(得分:4)
这就是我解决它的方法:
自定义info.plist
拦截SpringAMQPPublisher
方法:
send
配置:
public class SelectiveAmqpPublisher extends SpringAMQPPublisher {
static boolean shouldSend (Class<?> pt) {
return PublicEvent.class.isAssignableFrom(pt);
}
public SelectiveAmqpPublisher (
SubscribableMessageSource<EventMessage<?>> messageSource) {
super(messageSource);
}
@Override
protected void send (List<? extends EventMessage<?>> events) {
super.send(events.stream()
.filter(e -> shouldSend(e.getPayloadType()))
.collect(Collectors.toList()));
}
}