耀眼的橘子
2016-10-25 17:24:49
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条。
这样入门demo 就做完了啦,其实这些网上都有例子。我只是想把它记录下来,以后就不用总是百度了。看看自己的博客就好了。这样也挺方便的。如果能帮上路人的忙,我就更开心啦!
评论
最近浏览
2639064372 LV3
2020年3月6日
那一丝涟漪 LV8
2020年2月29日
1jj15j LV6
2019年10月14日
zhang_zhiwei2
2019年7月18日
暂无贡献等级
fazstart LV2
2019年2月14日
wbbhappy LV13
2019年1月18日
xiaoyong812 LV5
2018年12月20日
luo1314 LV1
2018年4月20日
kenpfang LV18
2018年3月15日
SamMing588 LV1
2018年3月1日