Code Monkey home page Code Monkey logo

kafka-mq's Introduction

kafka启动

首先启动kafka自带的zookeeper

bin/zookeeper-server-start.sh config/zookeeper.properties

再启动kafka服务

bin/kafka-server-start.sh config/server.properties

创建topic

bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test

查看topic

bin/kafka-topics.sh --list --zookeeper localhost:2181

在命令行中启动生产者

bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test

在命令行启动消费者

bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning

作为消息中心的设计方案

第一种:中心消息系统

利用http服务对外提供生产消息的RESTful接口,消费者服务收到消息后统一调用第三方各种服务。

  • 优点:是不需要第三方服务增加kafka相关设计和代码,只需按照旧的方式提供接口即可。
  • 缺点:有新的接口需要调用时需要修改消息中心代码进行重新发布

消息中心

第二种:各个业务系统分别实现生产者和消费者功能

原本提供接口的第三方系统需要实现消费者功能来监听是否有消息产生,代替http接口方式,消息生产者也需要相应的开发来生产消息。

  • 优点:不需要单独的消息中心转发消息,第三方服务只需提供简单的http接口即可
  • 缺点: 需要更多的协调开发

消息中心

docker镜像创建和运行

切换到项目根目录,执行以下命令:

docker build -t kserver:1 .

-t给镜像加名字和标签,.当前路径

docker run --name ks -ti -p 8081:8081 kserver:1 --name起一个别名,-ti交互方式运行,-p绑定宿主机端口到容器端口

提交镜像到docker hub

docker hub创建repository:yuedun/yddocker

docker tag kserver:1 yuedun/yddocker:1 docker push yuedun/yddocker:1

docker run --name ks -ti -p 8081:8081 yuedun/yddocker:2 node dest/server.js docker run --name ks2 -ti yuedun/yddocker:2 node dest/consumer.js 或

docker run --name ks -d -p 8081:8081 kser:pm2 pm2-runtime dest/server.js docker exec -ti ks /bin/sh 和 docker run --name ks2 -d kser:pm2 pm2-runtime dest/consumer.js docker exec -ti ks2 /bin/sh

进入后台运行的docker内 docker exec -ti ks /bin/sh

关于生产者和消费者参数的参数问题

生产者向消费者发布消息的时候一般采用最少参数原则。例如生产者修改了user表多个字段,只需要传user_id即可,因为消费者端可能会有不同的操作,生产者无法确定。 如果多个消费者做相同的操作,可以约定生产者发送统一参数。一般建议消费者自己查询需要的参数。

kafka-mq's People

Contributors

yuedun avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.