JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。Java消息服务是一个与具体平台无关的API,绝大多数MOM提供商都对JMS提供支持。
Apache ActiveMQ是Apache软件基金会所研发的开放源代码消息中间件;由于ActiveMQ是一个纯Java程序,因此只需要操作系统支持Java虚拟机,ActiveMQ便可执行。
下载Apache ActiveMQ服务
下载后将zip 压缩包解压,将这个解压缩后的文件夹拷贝到指定位置,我本人的服务都在c盘下的service文件夹
找到C:\service\apache-activemq\bin\win64下的activemq.bat文件双击即可启动activemq服务器,如下图
说明已经启动完毕,可以登录主页面查看ActiveMQ的相关内容,如果对话框一闪而过则需要配置环境变量
打开网页,在地址栏输入http://127.0.0.1:8161
用户名,密码都是admin
并将apache-activemq目录下的activemq-all.5.15.10.jar拷贝到工程中lib文件夹下,即可使用ActiveMQ的所有功能。
ActiveMQ点对点消息实现:使用方式首先启动消息生产者发送消息,然后启动消费者接收消息
创建JMSProducer.java(消息生产者)
package com.kingsoft.activemq.unit01;
import javax.jms.Connection; import javax.jms.ConnectionFactory; import javax.jms.Destination; import javax.jms.JMSException; import javax.jms.MessageProducer; import javax.jms.Session; import javax.jms.TextMessage; import org.apache.activemq.ActiveMQConnection; import org.apache.activemq.ActiveMQConnectionFactory;
/** * * @ClassName: JMSProducer * @Description: TODO (消息生产者) * @author A我去 * @date 2019年10月11日下午11:16:53 */ public class JMSProducer {
private static final String USERNAME = ActiveMQConnection.DEFAULT_USER; private static final String PASSWORD = ActiveMQConnection.DEFAULT_PASSWORD; private static final String BROKEURL = ActiveMQConnection.DEFAULT_BROKER_URL; private static final int SENDNUM = 10; //发送消息的数量
/** * * <b>Description</b><br> * (发送消息) * <br> * -------------------------------------------------<br> * <b>A我去 2019年10月11日 下午11:30:44</b> */ public static void sendMessage(Session session, MessageProducer producer) throws Exception{ for(int i=0;i<JMSProducer.SENDNUM;i++) { TextMessage message = session.createTextMessage("ActiveMQ 发送的消息"+i); System.out.println("发送消息:"+"ActiveMQ 发送的消息"+i); producer.send(message); } }
public static void main(String[] args) { ConnectionFactory connectionFactory; //连接工厂 Connection connection = null; //连接 Session session = null; //会话(接受或发送消息的线程) Destination destination; //消息目的地 MessageProducer producer; //消息生产者
//1.实例化连接工厂 connectionFactory = new ActiveMQConnectionFactory( JMSProducer.USERNAME, JMSProducer.PASSWORD, JMSProducer.BROKEURL); try { //2.通过连接工厂获取连接 connection = connectionFactory.createConnection(); //3.启动连接 connection.start(); //4.创建Session session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE); //5.创建消息队列 destination = session.createQueue("first-quque1"); //6.创建消息生产者 producer = session.createProducer(destination); //7.发送消息 sendMessage(session, producer); //8.session提交 session.commit(); } catch (JMSException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); }finally { //关闭session if(session!=null) { try { session.close(); } catch (JMSException e) { e.printStackTrace(); } } //关闭连接 if(connection != null) { try { connection.close(); } catch (JMSException e) { e.printStackTrace(); } } } } } |