步骤:
1 :下载ActiveMQ
官网:http://activemq.apache.org/
2 :解压AcitveMQ,
根据自己的操作系统选择运行win64或者win32下的activemq.bat,双击运行。注意:千万不能选择bin目录下的activemq.bat,这样会闪退。
我的解压目录为:
3:创建Java项目:
引入jar包。注意:不能少了hawtbuf-1.11.jar这个包,这个包是不能缺少的。
目录结构如图:
4:登录本地的MQ服务:
登录地址:http://localhost:8161/
初始账号以及密码:admin,admin
截图如下:
登录后的界面如下:
5:代码实现:
Sender.java:
1 package com.lm.activemq; 2 3 import javax.jms.Connection; 4 import javax.jms.ConnectionFactory; 5 import javax.jms.DeliveryMode; 6 import javax.jms.Destination; 7 import javax.jms.MessageProducer; 8 import javax.jms.Session; 9 import javax.jms.TextMessage; 10 import org.apache.activemq.ActiveMQConnection; 11 import org.apache.activemq.ActiveMQConnectionFactory; 12 /** 13 * 14 * @author Wei 15 * @time 2016年12月28日 下午8:37:38 16 * 参考:http://heisetoufa.iteye.com/blog/1908335 17 */ 18 public class Sender { 19 private static final int SEND_NUMBER = 5; 20 21 public static void main(String[] args) { 22 // ConnectionFactory :连接工厂,JMS 用它创建连接 23 ConnectionFactory connectionFactory; // Connection :JMS 客户端到JMS 24 // Provider 的连接 25 Connection connection = null; // Session: 一个发送或接收消息的线程 26 Session session; // Destination :消息的目的地;消息发送给谁. 27 Destination destination; // MessageProducer:消息发送者 28 MessageProducer producer; // TextMessage message; 29 // 构造ConnectionFactory实例对象,此处采用ActiveMq的实现jar 30 /*connectionFactory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER, 31 ActiveMQConnection.DEFAULT_PASSWORD, "tcp://192.168.0.104:61616");*/ 32 connectionFactory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER, 33 ActiveMQConnection.DEFAULT_PASSWORD, "tcp://localhost:61616"); 34 //打印出用户和密码 35 System.out.println("ActiveMQConnection.DEFAULT_USER:" + ActiveMQConnection.DEFAULT_USER 36 + ",ActiveMQConnection.DEFAULT_PASSWORD:" + ActiveMQConnection.DEFAULT_PASSWORD); 37 try { // 构造从工厂得到连接对象 38 connection = connectionFactory.createConnection(); 39 // 启动 40 connection.start(); 41 // 获取操作连接 42 session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE); 43 // 获取session注意参数值xingbo.xu-queue是一个服务器的queue,须在在ActiveMq的console配置 44 destination = session.createQueue("foo.bar"); 45 // 得到消息生成者【发送者】 46 producer = session.createProducer(destination); 47 // 设置不持久化,此处学习,实际根据项目决定 48 producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT); 49 // 构造消息,此处写死,项目就是参数,或者方法获取 50 sendMessage(session, producer); 51 session.commit(); 52 } catch (Exception e) { 53 e.printStackTrace(); 54 } finally { 55 try { 56 if (null != connection) 57 connection.close(); 58 } catch (Throwable ignore) { 59 } 60 } 61 } 62 63 public static void sendMessage(Session session, MessageProducer producer) throws Exception { 64 for (int i = 1; i <= SEND_NUMBER; i++) { 65 TextMessage message = session.createTextMessage("ActiveMq 发送的消息" + i); 66 // 发送消息到目的地方 67 68 System.out.println("发送消息:" + "ActiveMq 发送的消息" + i); 69 producer.send(message); 70 } 71 } 72 }
Receiver.java:
1 package com.lm.activemq; 2 3 4 import javax.jms.Connection; 5 import javax.jms.ConnectionFactory; 6 import javax.jms.Destination; 7 import javax.jms.MessageConsumer; 8 import javax.jms.Session; 9 import javax.jms.TextMessage; 10 import org.apache.activemq.ActiveMQConnection; 11 import org.apache.activemq.ActiveMQConnectionFactory; 12 /** 13 * 14 * @author Wei 15 * @time 2016年12月28日 下午8:37:51 16 * 参考:http://heisetoufa.iteye.com/blog/1908335 17 */ 18 public class Receiver { 19 public static void main(String[] args) { 20 int i = 0; 21 22 // ConnectionFactory :连接工厂,JMS 用它创建连接 23 ConnectionFactory connectionFactory; 24 // Connection :JMS 客户端到JMS Provider 的连接 25 Connection connection = null; 26 // Session: 一个发送或接收消息的线程 27 Session session; 28 // Destination :消息的目的地;消息发送给谁. 29 Destination destination; 30 // 消费者,消息接收者 31 MessageConsumer consumer; 32 // connectionFactory = new ActiveMQConnectionFactory( 33 // ActiveMQConnection.DEFAULT_USER, 34 // ActiveMQConnection.DEFAULT_PASSWORD, "tcp://192.168.0.104:61616"); 35 connectionFactory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER, 36 ActiveMQConnection.DEFAULT_PASSWORD, "tcp://localhost:61616"); 37 try { 38 // 构造从工厂得到连接对象 39 connection = connectionFactory.createConnection(); 40 // 启动 41 connection.start(); 42 // 获取操作连接 43 session = connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE); 44 // 获取session注意参数值 foo.bar 是一个服务器的queue,须在在ActiveMq的console配置 45 destination = session.createQueue("foo.bar"); 46 consumer = session.createConsumer(destination); 47 while (true) { 48 // 设置接收者接收消息的时间,为了便于测试,这里谁定为100s 49 TextMessage message = (TextMessage) consumer.receive(); 50 if (null != message) { 51 i++; 52 System.out.println("收到消息" + i +":"+ message.getText()); 53 } else { 54 break; 55 } 56 } 57 } catch (Exception e) { 58 e.printStackTrace(); 59 } finally { 60 try { 61 if (null != connection) 62 connection.close(); 63 } catch (Throwable ignore) { 64 } 65 } 66 } 67 }
使用 MQ编辑内容点击send按钮进行发送,
eclipse中Receiver的控制台的输出为:
收到消息17:Enter some text here for the message body...
这里可以编辑发送的内容等。
当然了,也可用过Java代码来进行消息队列的发送。
源码:链接:http://pan.baidu.com/s/1hsskzic 密码:8bty
时间: 2024-10-14 04:28:46