kafka生产者:自动提交,手动提交(同步提交/异步提交)
https://blog.csdn.net/qq_18581221/article/details/89409703
消息队列
消息队列(这里是消息队列概念,kafka只是消息队列的一种):
- 点对点模式(一对一,消费者主动拉取数据,消息收到后消息消除)
优点:是消费者可以自己拉取信息,可以防止一个客户端A发送消息速度比消费消息客户端B快而导致消费消息客户端奔溃。
缺点:是消费消息客户端B无法知道队列中是不是有数据,所以需要实时监视队列
- 发布/订阅(一对多,数据生产后,推送给所有订阅者)
优点:队列知道有数据主动给消息消费者
缺点:队列无法处理它自己的发送速度是否是消息消费者可以接受的
Kafka消息队列(kafka只支持点对点模式)
在java企业级编程中kafka有什么用?
功能模块之间通信, 三四个模块的话用socket也行.
但是企业级程序动辄几十个功能模块,一秒几万条消息需要传递.
再考虑低耦合,可拓展性,可维护性,用kafka来作为message bus传信息就不可避免.
其实有其他很多的AMQP产品选择. rabbitMQ, ActiveMQ等等.
kafka作为一个年轻的产品,现在还远不及RabbitMQ那么流行.
kafka还是太年轻了,社区活跃度和文档都不及其他AMQP产品那么多那么好.
win10系统安装kafka,zookeeper
https://blog.csdn.net/csgarten/article/details/80463453
Kafka启动命令: .\bin\windows\kafka-server-start.bat .\config\server.properties
安装时出现的错误:
解决方法:
Kafka简单使用操作:
https://blog.51cto.com/12181171/2324399
上面启动的两个不要关闭,再继续进行下面的操作:
3、topic:创建主题
命令为: .\bin\windows\kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test_topic ,如下所示:
查看已经存在的主题,命令为: .\bin\windows\kafka-topics.bat --list --zookeeper localhost:2181, 如下:
3、producer:生产者
创建生产者的命令:.\bin\windows\kafka-console-producer.bat --broker-list localhost:9092 --topic test_topic,如下:
4、consumer:消费者
创建消费者的命令: .\bin\windows\kafka-console-consumer.bat --zookeeper localhost:2181 --topic test_topic
但是我在用这个命令时出现了下面的情况:
这是因为使用的kafka版本比较新,上面的这种方式已经过时被删除了,所以没法启动。
这是可以换用另一种: .\bin\windows\kafka-console-consumer.bat --bootstrap-server localhost:2181 --topic test_topic --from-beginning ,启动如下:
乱码问题可以在具体生产者消费者代码中进行处理。
以上只是一些入门级的基础操作,进阶的搭建集群,集成其他的技术这些,还有待学习!
个人理解:kafka就像是一个过渡管道,用来中转消息的(消息代理),可能像一个微信公众号,生产者就是公众号的管理者,把文章放到公众号里面,而消费者就像是订阅这个公众号的人,只要订阅了这个公众号,在有新消息推送到公众号时,公众号会把新文章推给订阅者。
kafka的好处就在于:
(1)可靠性 - Kafka是分布式,它有分区,复制和容错的。
(2)可扩展性 - Kafka消息传递系统轻松缩放,无需停机。
(3)耐用性 - Kafka使用分布式提交日志,这意味着消息会尽可能快地保留在磁盘上,因此它是持久的。
(4)性能 - Kafka对于发布和订阅消息都具有高吞吐量。 即使存储了许多TB的消息,它也保持稳定的性能。
启动kafka
bin\
windows\
kafka-server-start.batconfig
\
server.properties
Kafka&java实例:
高级api
https://blog.csdn.net/m0_38075425/article/details/81357833
低级api
Kafka集群:
linux下配置kafka集群
一.G:\haierknowledge\kafka\kafka_2.12-2.1.1\config下的server.properties进行修改
- broker.id(集群涉及的几台服务器id要不一致且唯一)
- Delete.topic.enable=true //true是自己可以删除自己创建的topic
- log.dirs=G:\haierknowledge\kafka\logs //改成自己lig的路径
- Zookeeper.connect=hadoop102:2181,hadoop103,hadoop104:2181
Windows下配置kafka集群:
https://www.cnblogs.com/lentoo/p/7785004.html
kafka拦截器:
kafka相关概念解释:
https://zhuanlan.zhihu.com/p/62541561
ssm与kafka:
https://www.jianshu.com/p/47e79f3fe392
kafka生产者生产消息的几种方式:
https://blog.csdn.net/liuzhengwangyang/article/details/84313816
spring+kafka+springmvc:
https://blog.csdn.net/wu18296184782/article/details/80164190
kafka消息消费者的几种方式和场景:
https://msd.misuland.com/pd/3070888491219950818
ssm框架配置kafka生产者和消费者:
https://blog.csdn.net/baidu_41634343/article/details/94741610
spring+kafka消费者的2种配置方式:
https://blog.csdn.net/weixin_34152820/article/details/92080162
第三方Kafka Web管理界面:Kafka-Manager