一、Centos搭建activemq服务器环境:
1、mq官网下载最新的压缩包:http://activemq.apache.org/download.html
2、将mq压缩包移动到指目录解压
3启动mq服务,前提需要安装jdk环境
cd apache-activemq-5.15.6/bin/linux-x86-64
消息通讯的端口(默认为 61616)
管理控制台端口(默认为 8161)
4、管理控制台访问 :
http:192.168.234.130:8161
二、Java集成MQ
1、pom.xml加入activemq依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
</dependency>
2、写Java代码,创建mq的工具类
public class MQUtils {
private static final String PORT="tcp://localhost:61616";
private Connection mConnection;
private ConnectionFactory mConnectionFactory;
//mq发送消息
public void sendMQ(String name,String msg) throws JMSException
{
if (mConnectionFactory==null)
mConnectionFactory=new ActiveMQConnectionFactory(PORT);
if (mConnection==null)
mConnection=mConnectionFactory.createConnection();
mConnection.start();
Session session=mConnection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Queue queue=session.createQueue(name);
MessageProducer messageProducer=session.createProducer(queue);
TextMessage textMessage=session.createTextMessage(msg);
messageProducer.send(textMessage);
//session.commit();
messageProducer.close();
session.close();
mConnection.close();
}
//mq接受消息
public void recevieMQ(String name) throws JMSException {
if (mConnectionFactory==null)
mConnectionFactory=new ActiveMQConnectionFactory(PORT);
if (mConnection==null)
mConnection=mConnectionFactory.createConnection();
mConnection.start();
Session session = mConnection.createSession(false,Session.AUTO_ACKNOWLEDGE);
Queue queue = session.createQueue(name);
MessageConsumer consumer = session.createConsumer(queue);
TextMessage message= (TextMessage) consumer.receive();
System.out.println("获取消息="+message);
//session.commit();
consumer.close();
session.close();
mConnection.close();
}
}
2、创建mq的发送和调用类
@RestController
public class OrderCtl {
@RequestMapping("/notifyOrder")
public String notifyOrder(){
String msg="您的订单预约成功,请及时支付";
MQUtils mqUtils=new MQUtils();
try {
mqUtils.sendMQ("notify-order",msg);
} catch (JMSException e) {
e.printStackTrace();
System.out.println("JMSException===="+e.toString());
}
return "下单成功";
}
}
访问url后查看Activemq后台:
@RestController
public class PayCtl {
@RequestMapping("/notifyPay")
public String payNotify() throws JMSException {
MQUtils mqUtils=new MQUtils();
mqUtils.recevieMQ("notify-order");
return "订单支付成功";
}
访问url查看Activemq后台: