ActiveMQ点对点的发送和接收
最近在工作中用到了ActiveMQ的点对点模式,在此用一个范例简单描述下使用过程。
1.首先在工程导入ActiveMQ的jar包,此jar包在下载的ActiveMQ资源里,这里用的是ActiveMQ版本是5.9。
2.编写消息发送者
package com.cool.jms; import org.apache.activemq.ActiveMQConnection; import org.apache.activemq.ActiveMQConnectionFactory; import javax.jms.*; /** * 消息生产者 * Created by hejin on 2017/4/12 0012. */ public class JMSProducer { //默认连接用户名 private static final String USER= ActiveMQConnection.DEFAULT_USER; //默认连接密码 private static final String PASSWORD=ActiveMQConnection.DEFAULT_PASSWORD; //默认连接地址 private static final String URL=ActiveMQConnection.DEFAULT_BROKER_URL; //发送的消息数量 private static final int SENDNUM=10; public static void main(String[] args) throws JMSException { //连接工厂 ConnectionFactory connectionFactory; //连接 Connection connection; //会话(接收或发送消息的线程) Session session; //消息目的地 Destination destination; //消息生产者 MessageProducer messageProducer; //实例化连接工厂 connectionFactory=new ActiveMQConnectionFactory(JMSProducer.USER,JMSProducer.PASSWORD,JMSProducer.URL); try { //通过连接工厂获取连接 connection = connectionFactory.createConnection(); //启动连接 connection.start(); //创建session session=connection.createSession(true,Session.AUTO_ACKNOWLEDGE); //创建一个名称为HelloWorld的消息队列 destination= session.createQueue("HelloWorld"); //创建消息生产者 messageProducer = session.createProducer(destination); //发送消息 sendMessage(session,messageProducer); //提交 session.commit(); } catch (Exception e) { e.printStackTrace(); } } public static void sendMessage(Session session,MessageProducer messageProducer) throws Exception{ for (int i=0;i<JMSProducer.SENDNUM;i++){ //创建需要发送的消息 TextMessage message = session.createTextMessage("ActiveMQ发送消息:" + i); System.out.println("ActiveMQ发送消息:"+i); messageProducer.send(message); } } }
执行上面的代码控制台输出
在浏览器访问MQ的页面:http://127.0.0.1:8161/admin/queues.jsp,可以查看发送的队列的消息信息。
消息详情:
3.编写消费package com.cool.jms;
import org.apache.activemq.ActiveMQConnection; import org.apache.activemq.ActiveMQConnectionFactory; import javax.jms.*; /** * Created by hejin on 2017/4/12 0012. */ public class JMSConsumer { //默认连接名称 private static String USER= ActiveMQConnection.DEFAULT_USER; //默认密码 private static String PASSWORD=ActiveMQConnection.DEFAULT_PASSWORD; //默认连接地址 private static String URL=ActiveMQConnection.DEFAULT_BROKER_URL; public static void main(String[] args) { //连接工厂 ConnectionFactory connectionFactory; //连接 Connection connection; //会话 接收或发送消息的进程 Session session; //消息的目的地 Destination destination; //消息的消费者 MessageConsumer messageConsumer; //实例化连接工厂 connectionFactory=new ActiveMQConnectionFactory(JMSConsumer.USER,JMSConsumer.PASSWORD,JMSConsumer.URL); //IDEA快速捕获异常快捷键:Ctrl+Alt+T try { //通过连接工厂获取连接 connection=connectionFactory.createConnection(); //启动连接 connection.start(); //创建session session=connection.createSession(false,Session.AUTO_ACKNOWLEDGE); //创建一个HelloWorld的消息队列 destination=session.createQueue("HelloWorld"); //创建消息消费者 messageConsumer = session.createConsumer(destination); while(true){ TextMessage message = (TextMessage) messageConsumer.receive(100000); if(message!=null){ System.out.println("收到的消息:"+message.getText()); }else{ break; } } } catch (JMSException e) { e.printStackTrace(); } } }
控制台输出: