消息队列介绍

1.消息队列: --是一个中间插件,主要由消息的生产和消费组成,简单过程来讲,生产者将消息发送到

​ 消费队列的服务器上,消费者从消息队列服务上获取消息。

使用场景:

1.流量削峰:在某个时间段,web服务会受到大量的请求(并发量高)我们可以通过消息队列来

​ 将波峰变得平峰,减轻服务器的压力

2.异步处理:有些业务处理起来比较耗时,当我们将要处理的信息存储到消息队列之后,

​ 可以立即给发送方回复,同时我们也在处理该业务,当业务处理完成之后,在回复最终结果。

​ 提高响应效率

3.松耦合: 有些功能之间在业务上有依赖关系,由于耦合度过高,某个功能进行了更改,依赖

​ 该功能的其他功能也需要进行相应的修改,这样会导致系统很难维护。一方将数据发送到

​ 消息队列,需要使用该数据的功能从消息队列中获取数据,多个业务之间就不需要直接通讯

消息队列的模式

1.点对点模式:

多个消费者,当某条消息被消费者使用之后,其他消费者就不能在获取到该消息

2.发布/订阅模式(话题模式)

订阅了该话题的消费者,都能收到该条消息(一条消息可以被多个消费者使用)

订阅者不能接收到订阅之前的消息

消息队列生产者过程

1.创建连接工厂

ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory(“tcp://localhost:61616”);

2.获取连接对象

Connection connection = factory.createConnection();

3.打开连接

connection.start();

4.获取会话对象

Session session =
connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

5.创建队列(可以是点对点或者话题)

点对点模式

Queue queue= session.createQueue(“first”);

6.创建生产者

MessageProducer producer= session.createProducer(queue);

7.创建消费对象

TextMessage message = session.createTextMessage(“消息内容”);

8.发送消息

producer.send(message);

//关闭
producer.close();
session.close();
connection.close();
System.out.println(“消息发送完成”);

消息队列消费者过程

ActiveMQConnectionFactory factory =
new ActiveMQConnectionFactory(“tcp://localhost:61616”);
Connection connection = factory.createConnection();
connection.start();
Session session= connection.createSession();
Queue queue= session.createQueue(“first”);
创建消费者
MessageConsumer consumer= session.createConsumer(queue);

获取消息(阻塞式)

TextMessage msg = (TextMessage) consumer.receive();

System.out.println("msg = " + msg.getText());

//阻塞线程
System.in.read();

//关闭
consumer.close();
session.close();
connection.close();

常用的消息队列的实现

1.activeMQ

2.kafka

3.RabbitMQ

4.RocketMQ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值