25 消息中间件--ActiveMQ

本文详细介绍了消息中间件ActiveMQ的使用,包括点对点通讯模式的实现,生产者和消费者的设计,以及ActiveMQ的四种消息可靠机制。此外,还讨论了如何在SpringBoot中整合ActiveMQ,并提出了在使用消息中间件时,确保消息幂等性避免重复消费的方法。
摘要由CSDN通过智能技术生成

目录

一、消息中间件

通讯方式--点对点和发布订阅

消息中间件应用场景

MQ产品的分类

RabbitMQ

Redis

ZeroMQ

ActiveMQ

Jafka/Kafka

ActiveMQ使用

实现点对点通讯模式

生产者

消费者

发布订阅(先写消费者)

生产者:

消费者:

JMS消息可靠机制-ActiveMq 4种

SpringBoot整合ActiveMQ

生产者:

引入 maven依赖

创建Producer

消费者:

引入 maven依赖

创建Consumer

使用消息中间注意事项

消费者如果保证消息幂等性,不被重复消费。


一、消息中间件

客户端和服务器进行异步通讯

同步缺点:阻塞,超时,数据不一致

接口重复提交解决方式:token(令牌)+图形验证码

为什么使用消息中间件?

解决高并发,两种通讯:1点对点通讯(一对一),2发布订阅(一对多),异步通讯(无需等待)-- 消息模型

 1点对点(队列)

   生产者:发送消息,提高接口

   消费者:调用接口

为什么mq能够解决高并发?

缓存,进行排队,队列可以做持久化,存放消息地址

通讯方式--点对点和发布订阅

 

消息中间件应用场景

多线程+补偿机制--麻烦

用户注册,订单系统,库存系统--点对点通讯

极光,融云,环信---发布订阅

 

 

MQ产品的分类

RabbitMQ

是使用Erlang编写的一个开源的消息队列,本身支持很多的协议:AMQPXMPP, SMTP, STOMP,也正是如此,使的它变的非常重量级,更适合于企业级的开发。同时实现了一个经纪人(Broker)构架,这意味着消息在发送给客户端时先在中心队列排队。对路由(Routing),负载均衡(Load balance)或者数据持久化都有很好的支持。

Redis

是一个Key-ValueNoSQL数据库,开发维护很活跃,虽然它是一个Key-Value数据库存储系统,但它本身支持MQ功能,所以完全可以当做一个轻量级的队列服务来使用。对于RabbitMQRedis的入队和出队操作,各执行100万次,每10万次记录一次执行时间。测试数据分为128Bytes512Bytes1K10K四个不同大小的数据。实验表明:入队时,当数据比较小时Redis的性能要高于RabbitMQ,而如果数据大小超过了10KRedis则慢的无法忍受;出队时,无论数据大小,Redis都表现出非常好的性能,而RabbitMQ的出队性能则远低于Redis

 

入队

出队

 

128B

512B

1K

10K

128B

512B

1K

10K

Redis

16088

15961

17094

25

15955

20449

18098

9355

RabbitMQ

10627<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值