当前位置: 首页 > 知识库问答 >
问题:

如何从命令侧轴上发布更多实例的事件

姬衡
2023-03-14
<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-amqp</artifactId>
    </dependency>
    <dependency>
        <groupId>org.axonframework</groupId>
        <artifactId>axon-amqp</artifactId>
        <version>${axon.version}</version>
    </dependency>
    <dependency>
        <groupId>org.axonframework</groupId>
        <artifactId>axon-spring-boot-starter</artifactId>
        <version>${axon.version}</version>
    </dependency>
    @Bean
    public Exchange exchange() {
        return ExchangeBuilder.fanoutExchange("SeatReserveEvents").build();
    }

    @Bean
    public Queue queue() {
        return QueueBuilder.durable("SeatReserveEvents").build();
    }

    @Bean
    public Binding binding() {
        return BindingBuilder.bind(queue()).to(exchange()).with("*").noargs();
    }

    @Autowired
    public void configure(AmqpAdmin admin) {
        admin.declareExchange(exchange());
        admin.declareQueue(queue());
        admin.declareBinding(binding());
    }
axon:
  amqp:
    exchange: SeatReserveEvents 
    @Bean
public SpringAMQPMessageSource statisticsQueue(Serializer serializer) {
    return new SpringAMQPMessageSource(new DefaultAMQPMessageConverter(serializer)) {
        @RabbitListener(queues = "SeatReserveEvents")
        @Override
        public void onMessage(Message arg0, Channel arg1) throws Exception {
            super.onMessage(arg0, arg1);
        }

    };
}
@Component
@ProcessingGroup("statistics")
public class EventLoggingHandler
{
    @EventHandler
    protected void on(SeatResurvationCreateEvent event) {
        System.err.println(event);
    }

    @EventHandler
    protected void on(SeatReservationUpdateEvent event) {
        System.err.println(event);
    }
}
axon:
  eventhandling:
    processors:
      statistics.source: statisticsQueue

共有1个答案

莫骞仕
2023-03-14

我想说,这更多的是一个AMQP/RabbitMQ配置设置,而不是Axon框架特定的问题。也就是说,您希望将RabbitMQ设置为不进行循环,而是进行pub/sub,如本教程中所述。

然而,我确实有另一个,更多的Axon框架的具体反应在脑海中。如果还可以直接从存储中提取事件,为什么要立即在队列中发布事件呢?因此,在应用程序的查询端有TrackingEventProcessors,它在应用程序的命令端追加事件时从事件存储中提取事件。

这就是集成了CQRS的Axon Framework应用程序的整体版本最初的样子。因此,在命令和查询端拆分CQRS应用程序的最简单的下一步是保留接收事件的方式,而不在两者之间添加队列。但是,如果您有通过队列发布的特定需求,或者您只是更喜欢使用队列而不是让查询应用程序直接从事件存储中提取,请忽略此注释,回到RabbitMQ教程。

 类似资料:
  • 问题内容: 我有一个运行在Windows Server 2016上的Jenkins主服务器。我需要能够运行linux容器来运行一些自动化的e2e测试。出于某些原因,我无法在此计算机上启用hyper-v。这使我无法在Jenkins主服务器上安装lcow和docker 我要做的是在virtualbox中安装Ubuntu 18.04 VM,并在那里安装docker。我已经使用ssh将VM配置为Jenki

  • 我实际上是CQRS和事件来源的新手。 当我看到以下代码时,我被命令处理程序弄得一头雾水: null 那么我们为什么不把的逻辑放在命令处理程序中呢?这样做的目的是什么? 完整的源代码在这个链接。

  • 一切都很好,但是假设我使用相同的聚合标识符再次发布相同的命令。我确实看到ServiceCreatedEvent被应用于调试器中的聚合,但是由于已经存在带有该键的域事件记录,所以不会向后端持久化任何内容。同样,一切都很好,但我看到ServiceCreatedEvent被发布给Kafka并被我们的监听器使用,这是意想不到的行为。 我想知道这是否是Axon的预期行为,或者我们的Kafka集成应该确保我们

  • 我最近做了一个不和谐的机器人,有几个功能,这个机器人有一个先进的命令处理程序,我想知道如何做一个命令,在那里,机器人说什么你告诉它。 示例:“.say(消息)” bot以“(消息)”响应 这是我的命令处理程序 没有关于如何使用高级命令处理程序执行此操作的教程 现在的机器人是为了好玩,但我可能会使它成为适度。

  • 我正在尝试从命令行更新Xcode。最初我试着跑步: 这导致了以下消息: 所以问题仍然存在,有没有办法从命令行更新Xcode?

  • 问题内容: 您好,可能是一个非常简单的问题,但是.. 当使用matplotlib.pyplot绘制图形时,我的Y轴从-0.04变为0.03,这很好,但是有8个增量标签(例如0.03、0.02、0.01等)。我可能需要16个左右。 谢谢你的帮助 问题答案: 使用改变刻度位置。例如: 是另一种选择。 (来源:stevetjoa.com)