Axon:如何为单个事件配置amqp发布?

时间:2017-10-13 02:24:40

标签: java spring-boot amqp spring-amqp axon

我有一个简单的弹簧驱动服务,它通过amqp发布事件。 配置基于bootiful-axon

现在我希望服务保持一些私有状态。这是一个简单的用例,可以通过3个额外的事件来实现。这些事件在服务范围之外没有任何意义,所以我不希望他们离开"离开"。

如何指定应通过amqp发布哪些事件?哪些事件不是?

1 个答案:

答案 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()));

    }    

}