apache activemq (消息队列)入门部署demo
1.去官方网站下载:http://activemq.apache.org/
2.运行ActiveMQ
解压缩 apache-activemq-5.14.1-bin,然后双击 apache-activemq-5.14.1\bin\win64\wrapper.exe (如果你的电脑也是64位 )运行ActiveMQ程序
3.创建Eclipse项目并运行
创建project:ActiveMQ-5.5,
并导入apache-activemq-5.14.1\lib目录下需要用到的jar文件,项目结构如下图所示:
(附件)
生成消息
package com.lcl.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;
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;
public static void main(String[] args) {
//连接工厂
ConnectionFactory connectionFactory;
//连接
Connection connection = null;
//会话 接受或者发送消息的线程
Session session;
//消息的目的地
Destination destination;
//消息生产者
MessageProducer messageProducer;
//实例化连接工厂
connectionFactory = new ActiveMQConnectionFactory(JMSproducer.USERNAME, JMSproducer.PASSWORD, JMSproducer.BROKEURL);
try {
//通过连接工厂获取连接
connection = connectionFactory.createConnection();
//启动连接
connection.start();
//创建session
session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);
//创建一个名字为HelloWord的消息队列
destination = session.createQueue("HelloWord");
//创建消息生产者
messageProducer = session.createProducer(destination);
//发送消息
sendMseeage(session,messageProducer);
session.commit();
} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* @throws JMSException
*
* @Title: sendMseeage
* @Description: 发送消息
* @param @param session
* @param @param messageProducer 消息生产者额
* @return void
* @throws
*/
private static void sendMseeage(Session session,
MessageProducer messageProducer) throws JMSException {
for(int i=0;i<JMSproducer.SENDNUM;i++){
//创建一跳文本消息
TextMessage message = session.createTextMessage("ActiveMQ 发送消息"+i);
System.out.println("发送消息:Activemq 发送消息" + i);
messageProducer.send(message);
}
}
}
当消息生成以后去activemq的服务器查看,会发现生成一条消息,未读10条。
package com.lcl.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 javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;
public class JMSConsumer {
//默认链接用户名
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;
public static void main(String[] args) {
//连接工厂
ConnectionFactory connectionFactory;
//连接
Connection connection = null;
//会话 接受或者发送消息的线程
Session session;
//消息的目的地
Destination destination;
//消息的消费者
MessageConsumer messageConsumer;
//实例化连接工厂
connectionFactory = new ActiveMQConnectionFactory(JMSConsumer.USERNAME, JMSConsumer.PASSWORD, JMSConsumer.BROKEURL);
try {
//通过连接工厂获取连接
connection = connectionFactory.createConnection();
//启动连接
connection.start();
//创建session
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//创建一个连接HelloWord的消息队列
destination =session.createQueue("HelloWord");
//创建消息的消费者
messageConsumer = session.createConsumer(destination);
while(true){
TextMessage textMessage = (TextMessage) messageConsumer.receive(100000);
if(textMessage != null){
System.out.println("收到的消息:" + textMessage.getText());
}else{
break;
}
}
} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
这个时候再去activemq的服务器查看,会发现刚才生成的消息,未读0条,已读10条。