JMS_ActiveMQ的点对点消息模型的小例子

时间:2021-05-05 09:51:28

一个小白的自我记录。

首先需要在你电脑的环境变量中配置好JAVA_HOME,这个不要忘记。

然后去这个地址去下载你想要的ActiveMQ版本。http://activemq.apache.org/download-archives.html

下载后直接解压即可。

JMS_ActiveMQ的点对点消息模型的小例子

根据操作系统的位数选择要使用win64或者win32,我的系统位数是64,点进去后,双击activemq.bat。

然后再按浏览器上输入 http://localhost:8161/admin/  会弹出一个Window安全的对话框,用户名和密码默认都是admin,输入进去即可。

如果双击activemq.bat后启动不成功,先检查一个你的JAVA_HOME的配置,我刚开始也是不好用,所以用了个绝招,换了个版本就好了。小白一个,其中的道理不是很懂。

如果能够出现这个页面就说明环境已经搭建好了

JMS_ActiveMQ的点对点消息模型的小例子

既然环境已经搭建好了 剩下的就是开始搞一搞项目了。

创建一个java项目,在你下载的ActiveMQ的根目录有一个activemq-all-5.9.0.jar包,将其导入到你的项目。


JMS_ActiveMQ的点对点消息模型的小例子


1,建立一个生成者、发送者,用来发送消息


package com.activemq.producer;

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;

/**
* 消息生产者、发送者
*
* @author Administrator
*
*/
public class JMSProducer {

public static void main(String[] args) {
// 连接工厂
ConnectionFactory connectionfactory = null;
// 连接
Connection connection = null;
// 会话 接收或发送消息的线程
Session session = null;
// 消息的目的地
Destination destination = null;
// 消息生产者、发送者
MessageProducer messageProducer;

try {
// 实例化连接工厂
connectionfactory = new ActiveMQConnectionFactory(
ActiveMQConnection.DEFAULT_USER, // 默认的连接用户名
ActiveMQConnection.DEFAULT_PASSWORD, // 默认的连接密码
ActiveMQConnection.DEFAULT_BROKER_URL); // 默认的连接地址
// 创建连接
connection = connectionfactory.createConnection();
// 启动连接
connection.start();
// 创建Session 第一个参数是指是否开启事务, 第二个参数是指验证方式
session = connection.createSession(Boolean.TRUE,
Session.AUTO_ACKNOWLEDGE);
// 创建消息队列,这个名称在后面能够用到
destination = session.createQueue("myFirstMQ");
// 创建消息生成者
messageProducer = session.createProducer(destination);

// 循环发送信息
for (int i = 0; i < 10; i++) {
// 发送一个简单消息
TextMessage textMessage = session
.createTextMessage("ActiveMQ send " + i);

System.out.println("ActiveMQ send " + i);
messageProducer.send(textMessage);
}
// 提交
session.commit();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
// 关闭连接
} finally {
if (connection != null) {
try {
connection.close();
} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}

}


启动这个类以后,在控制台可以看到发送的消息,然后到ActiveMQ的页面中可以看见发送成功与否


JMS_ActiveMQ的点对点消息模型的小例子


2,建立一个监听的类实现MessageListener接口


package com.activemq.listener;

import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;

/**
* 监听器
*
* @author Administrator
*
*/
public class Listener implements MessageListener {

public void onMessage(Message message) {
// TODO Auto-generated method stub
try {
System.out.println("收到的消息:" + ((TextMessage) message).getText());
} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

}


3,当消息发送以后,我们可以去ActiveMQ这个服务器上去监听是否有消息可以让我们消费,消费消息也就是接收消息。建立一个消息的消费者类。


package com.activemq.consumer;

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageConsumer;
import javax.jms.Session;

import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;

import com.activemq.listener.Listener;

/**
* 接收消息监听的方式
*
* @author Administrator
*
*/
public class JMSConsumer2 {

// 默认的连接用户名
// 默认的连接密码
// 默认的连接地址

public static void main(String[] args) {

// 连接工厂
ConnectionFactory connectionfactory;
// 连接
Connection connection = null;
// 会话 接收或发送消息的线程
Session session;
// 消息的目的地
Destination destination;
// 消息的消费者
MessageConsumer messageConsumer;
try {
// 实例化连接工厂
connectionfactory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER,
ActiveMQConnection.DEFAULT_PASSWORD, ActiveMQConnection.DEFAULT_BROKER_URL);
// 创建连接
connection = connectionfactory.createConnection();
// 启动连接
connection.start();
// 创建Session ,消费的清空下要吧事务关闭
session = connection.createSession(Boolean.FALSE,
Session.AUTO_ACKNOWLEDGE);
// 创建消息队列 要与发送消息的queue相同,也就也说,你可以指定要消费的对象。
destination = session.createQueue("
myFirstMQ");
// 创建消息消费者
messageConsumer = session.createConsumer(destination);
messageConsumer.setMessageListener(new Listener());
} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}



运行这个类,会在控制台上看到收到的信息,也要去ActiveMQ的服务器上来查看变化,自己可以前后对比一下。



JMS_ActiveMQ的点对点消息模型的小例子