• Kafka真实项目应用


    项目介绍:
    项目模拟交易所,进行证券之类的交易,在撮合交易中:添加委托,更新委托,添加成交,添加或者更新持仓,会频繁进行数据库操作。防止在频繁操作数据库的过程中,数据库处理不完,导致报错,然后抛出异常,数据丢失的问题。也考虑到项目以后会使用 kafka 作为总线,进行数据交互,所以在此阶段,db 操作直接使用 kafka,以后稍作改动即可。

    总体思想:

    1.在消息发送过来进行数据库操作的时候,我们不进行数据库操作,而是使用 kafka 发送消息到 kafka

    2.kafka 消费者,消费到消息之后,进行具体的数据库操作,插入或者更新数据库,如果出错,目前是打印日志,进行记录

    生产者:

    kafka 生产者主要是发送消息到 kafka ,有 kafka 的 topic,key 和 value 值

    消费者:
    思路:
    1.项目启动时,启动 kafka 的监听器类:KafkaConsumeLinstener
    2.kafka 的监听器,调用 kafka 的线程类:KafkaConsumeRunnable
    3.kafka 的线程类,run 方法,启动 kafka 消费者,并调用接口 IKafkaDataConsumer 的方法来实现 kafka 消息的处理
    4.kafka 的具体消息处理类 KafkaDataConsumer 实现 接口 IKafkaDataConsumer 

    消息处理类:
    接口和实现类
    注意点:处理消息的方法 dealKafkaMessage 套层try catch自己来处理异常,不要抛出。抛出异常线程死掉,kafka接收到消息了,但是不会消费消息。看日志会发现,kafka 意识到有消息要处理,但是指向消息的指针不会发生变化。(不知道是不是因为线程使用的是 Runnable 的原因,Runnable 不会抛出异常,而 callable 可以抛出异常)

    ————————————————
    版权声明:本文为CSDN博主「wang_xiaozao」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/u010343544/article/details/78427345

  • 相关阅读:
    LightOJ 1139 8 puzzle + hdu 1043 Eight A*
    hdu 1180 优先队列 + bfs
    hdu 1270
    HDU Doing Homework
    hdu 1171 Big Event in HDU
    hdu 3613 (KMP)回文串
    POJ 3461 Oulipo(KMP)
    POJ 1565(DP状态压缩)
    NYOJ 634 万里挑一(优先队列)
    职场手记1_你想成文什么样的人
  • 原文地址:https://www.cnblogs.com/atBruce/p/12507926.html
Copyright © 2020-2023  润新知