作用:1、 解决服务之间耦合, 2、 使用消息队列,增加系统并发处理量
主要应用场景:可以运用于调用第三方插件请求发送短信的情况,以及商城优惠券到账等(各类数据处理量大,优先级不高的场景)
ActiveMQ 使用的是标准生产者和消费者模型 有两种数据结构 Queue、Topic
1、 Queue 队列 ,生产者生产了一个消息,只能由一个消费者进行消费
2、 Topic 话题,生产者生产了一个消息,可以由多个消费者进行消费
在实际开发中使用ActiveMQ
1,在maven中导入activemq-all
2,编写MQ消息生产者
//获取连接工厂对象
ConnectionFactory factory = new ActiveMQConnectionFactory();
//获取一个连接
Connection conn = factory.createConnection();
//建议会话
Session session = conn.createSession(true,Session.AUTO_ACKNOWLEDGE);
//创建队列或者话题对象
Queue queue = session.createQueue("hello world");
//创建生产者对象
MessageProducer producer = session.createProducer(queue);
//发送消息
for(int i = 0;i<10;i++){
//将消息存放在消息池中,等待消费者消费.
producer.send(session.createTextMessage("xxxxxx"+i))
}
//提交操作
session.commit();
3,编写MQ消息消费者
//获取连接工厂对象
ConnectionFactory factory = new ActiveMQConnectionFactory();
//获取一个连接
Connection conn = factory.createConnection();
//开启连接
connection.start();
//建立会话,第一个参数:是否使用事务
Session session = conn.createSession(false,Session.AUTO_ACKNOWLEDGE);
//创建队列对象
Queue queue = session.createQueue("helloworld");
//创建消费者
MessageConsumer consumer = session.createConsumer("queue");
//写一个循环消费消息
while(true){
TextMessage message = (TextMessage)messageConsumer.receive(10000);
if(message != null){
System.out.println(message.getText())
}else{
break;
}
}
另一种创建消费者的方式