Springboot整合ActiveMQ、RabbitMQ、Kafka总结

ActiveMQ

windows安装:https://www.cnblogs.com/yangw/p/5910964.html

整合参考:https://segmentfault.com/a/1190000014108398

本地访问:http://localhost:8161/admin 默认用户名密码为admin、admin,

Java类:JmsTemplate/JmsMessagingTemplate

总结:

1、安装简单,无需配置环境,解压启动,可简单实现消息持久化,基于jms规范。java开发中较为简单,和业务配合快速。

2、发送模式:点对点,订阅者对发布者。都可以指定监听/指定消费1、Queue 队列(P2P消息模型) ,生产者生产了一个消息,只能由一个消费者进行消费 :给微信好友发消息2、Topic 主题/广播(Pub/Sub消息模型),生产者生产了一个消息,可以由多个消费者进行消费。

相同点:1、都只有一个生产者 2、都可以有多个消费者

不同点:1、queue队列模式,一个消息只能被一个消费者消费,不能重复消费当消费者消费某个消息的时候,一定要得到这个消息被成功消费的回执,才会分发下一个消息queue入队之后,无论等待多久,消息都会一直等待消费者来处理 2、topic广播模式,一个消息可以被多个消费者消费这个消息无法被成功消费与否,都无所谓topic要求时间要一致,我正好发,你正好收

 

RabbitMQ

windows安装:https://blog.csdn.net/weixin_39735923/article/details/79288578

整合参考:https://www.cnblogs.com/ityouknow/p/6120544.html

本地访问:http://localhost:15672 用户名和密码都是guest

Java类:AmqpTemplate

总结:

1、需安装erl,配置ERLANG_HOME的环境变量。安装RabbitMQ,安装目录下输入rabbitmq-plugins enable rabbitmq_management命令。sbin目录下双击rabbitmq-server.bat启动。基于AMQP,即 Advanced Message Queuing Protocol,高级消息队列协议。

2、交换机(Exchange)交换机的功能主要是接收消息并且转发到绑定的队列,交换机不存储消息,在启用ack模式后,交换机找不到队列会返回错误。

  • Direct:direct 类型的行为是"先匹配, 再投送". 即在绑定时设定一个 routing_key, 消息的routing_key 匹配时, 才会被交换器投送到绑定的队列中去.
  • Topic:按规则转发消息(最灵活)
  • Headers:设置 header attribute 参数类型的交换机
  • Fanout:转发消息到所有绑定队列

3、路由键必须是一串字符,用句号(.) 隔开,比如说 agreements.us,或者 agreements.eu.stockholm 等。

路由模式必须包含一个 星号(*),主要用于匹配路由键指定位置的一个单词,比如说,一个路由模式是这样子:agreements..b.*,那么就只能匹配路由键是这样子的:第一个单词是 agreements,第四个单词是 b。 井号(#)就表示相当于一个或者多个单词,例如一个匹配模式是 agreements.eu.berlin.#,那么,以agreements.eu.berlin 开头的路由键都是可以的。

 

Kafka

windows安装:https://www.jianshu.com/p/d489ab1186a3

整合参考:https://blog.csdn.net/guijiaoba/article/details/78637375

Java类:KafkaTemplate kafak默认端口9092 zookeeper默认端口2181

总结:

1、 zookeeper 配置环境变量,修改config,输入zkServer运行。kafka版本要与jdk版本相适用,JDK1.8.0_05用不了kafka_2.12-2.2.0,但是适用kafka_2.11-2.0.1。可能会有jdk找不到的错,一是环境变量需配置,二是配置文件更改。

2、kafka和JMS(Java Message Service)实现(activeMQ)不同的是:即使消息被消费,消息仍然不会被立即删除.日志文件将会根据broker中的配置要求,保留一定的时间之后删除;比如log文件保留2天,那么两天后,文件会被清除,无论其中的消息是否被消费.kafka通过这种简单的手段,来释放磁盘空间,以及减少消息消费之后对文件内容改动的磁盘IO开支。

3、Kafka is a distributed,partitioned,replicated commit logservice。它提供了类似于JMS的特性,但是在实现上完全不同,此外它并不是JMS规范的实现。 kafka对消息保存时根据Topic进行归类,发送消息者成为Producer,消息接受者成为Consumer,此外kafka集群有多个kafka实例组成,每个实例成为broker。 无论是kafka集群,还是producer和consumer都依赖于zookeeper来保证系统可用性集群保存一些meta信息。

 

整合代码:

https://gitee.com/cfhcom/cloud

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值