• Disruptor的事件处理机制


    随机消费,只被消费一次

    disruptor.handleEventsWithWorkerPool(new OrderHandler1("1"), new OrderHandler1("2"));

    全部消费,消费多次

    disruptor.handleEventsWith(new OrderHandler1("1"), new OrderHandler1("2"));

    消费者之间存在消费顺序,相当于在各个EventHandlerGroup之间进行级联,形成依赖关系。

    disruptor.handleEventsWith(new OrderHandler1("1"), new OrderHandler1("2")).then(new OrderHandler1("3"), new OrderHandler1("4")).then(new OrderHandler1("5"));

    多消费者之间不重复消费,且不同的消费者WorkPool之间存在依赖关系。

            disruptor.handleEventsWithWorkerPool(new OrderHandler1("1"), new OrderHandler1("2")).thenHandleEventsWithWorkerPool(new OrderHandler1("3"), new OrderHandler1("4")).thenHandleEventsWithWorkerPool(new OrderHandler1("5"));

    单生产者,多消费者模式。消费者1、2不重复消费消息,消费者3、4消费消费者1或2消费过的消息,且独立重复消费。消费者5消费消费者3、4均消费过的消息。

            disruptor.handleEventsWithWorkerPool(new OrderHandler1("1"), new OrderHandler1("2")).then(new OrderHandler1("3"), new OrderHandler1("4")).then(new OrderHandler1("5"));

    单生产者,多消费者模式。消费者1、2独立消费每一条消息,消费者3、4不重复消费消费者1、2均处理过的消息,消费者5消费消费者3或4消费过的消息

            disruptor.handleEventsWith(new OrderHandler1("1"), new OrderHandler1("2")).thenHandleEventsWithWorkerPool(new OrderHandler1("3"), new OrderHandler1("4")).then(new OrderHandler1("5"));

    多生产者,单消费者版本。三个生产者独立生产消息

    ProducerType要设置为MULTI,后面才可以使用多生产者模式

      Disruptor disruptor =
                    new Disruptor(factory, ringBufferSize, Executors.defaultThreadFactory(), ProducerType.MULTI, new YieldingWaitStrategy());


            

  • 相关阅读:
    【JDBC】----综合案例(账号密码登录和SQL注入)
    1.3 Redis五大数据类型
    职场IT老鸟的几点小习惯
    python和shell脚本,每隔五分钟将远端服务器中的文件夹数据下载到跳板机
    七千字详解javaString类
    Vue响应式内容丢失处理
    SpringCloud 服务限流与熔断
    OBS架构分析
    微服务-gateway基本使用
    “远程“操作oracle数据泵impdp、expdp导入导出
  • 原文地址:https://blog.csdn.net/yz7074998/article/details/126308330