:)
1.为什么使用ActiveMQ
1.1.简介
MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过写和检索出入列队的针对应用程序的数据(消息)来通信,而无需专用连接来链接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求。
1.2.MQ特点
MQ的消费-生产者模型的一个典型的代表,一端往消息队列中不断的写入消息,而另一端则可以读取或者订阅队列中的消息。
1.3.使用场景
在项目中,将一些无需即时返回且耗时的操作提取出来,进行了异步处理,而这种异步处理的方式大大的节省了服务器的请求响应时间,从而提高了系统的吞吐量。
2.基本操作的demo
//生产者
static void testMQProducerQueue() throws Exception{
//创建连接工厂,设定ip和端口号
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_BROKER_URL);
//创建连接
Connection connection = connectionFactory.createConnection();
//打开连接
connection.start();
//创建会话
Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);
//创建队列,队列名叫test-queue
Queue queue =session.createQueue("test-queue");
//创建消息生产者
MessageProducer producer = session.createProducer(queue);
//创建一个字符串消息
TextMessage textMessage = session.createTextMessage("hellow_mq");
//发送消息
producer.send(textMessage);
//关闭资源
producer.close();
session.close();
connection.close();
}
//消费者
static void testMQConsumerQueue() throws Exception{
//创建连接工厂,设定ip和端口号
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_BROKER_URL);
//创建连接
Connection connection = connectionFactory.createConnection();
//打开连接
connection.start();
//创建会话
Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);
//创建队列,队列名叫test-queue
Queue queue =session.createQueue("test-queue");
//创建消费者
MessageConsumer consumer = session.createConsumer(queue);
//创建消息监听器
consumer.setMessageListener(new MessageListener() {
@Override
public void onMessage(Message message) {
if (message instanceof TextMessage){
TextMessage textMessage = (TextMessage)message;
try {
System.out.println(textMessage.getText());
} catch (JMSException e) {
e.printStackTrace();
}
}
}
});
//程序接收内容,主要是为了不让连接那么快关闭,因为消息可能还没来得及过来
System.in.read();
//关闭资源
consumer.close();
session.close();
connection.close();
}
3.能干什么
1.流量削峰
2.任务异步处理
特点:可以解耦合
(学习新技术的三要素:是什么?能干什么?有什么优势?)