ActiveMQ消息队列基础

作用: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;

}

}

另一种创建消费者的方式