[java] 基于ActiveMQ 传输消息
1.下载ActiveMQ
去官方网站下载:http://activemq.apache.org/
2.运行ActiveMQ
解压缩apache-activemq-5.9.0-bin.zip,然后双击apache-activemq-5.9.0\bin\win32\activemq.bat运行ActiveMQ程序。
启动ActiveMQ以后,登陆:http://localhost:8161/admin/,创建一个Queue,命名为TQueue。
3.创建项目
package com.wa.xwolf.sblog.jms; import java.util.Scanner; import javax.jms.Connection; import javax.jms.ConnectionFactory; import javax.jms.DeliveryMode; import javax.jms.Destination; import javax.jms.MessageProducer; import javax.jms.Session; import javax.jms.TextMessage; import org.apache.activemq.ActiveMQConnection; import org.apache.activemq.ActiveMQConnectionFactory; /** * 消息发送 * @author xwolf * */ public class Sender { private static ConnectionFactory connectionFactory ; private static Connection connection; private static Session session ; private static String BROKER_URL="tcp://localhost:61616"; // 消息推送目的地 private static Destination destination; //消息提供者 private static MessageProducer messageProducer; public static void sendMessage(Session session, MessageProducer producer) throws Exception { for(int i=0;i<2;i++){ //读取控制到的内容并发送 Scanner scanner = new Scanner(System.in); System.out.println("请输入内容:"); TextMessage message = session .createTextMessage("ActiveMQ发送的消息:" + scanner.nextLine() ); // 发送消息到目的地方 System.out.println("发送消息:" + "ActiveMQ发送的消息" + scanner.nextLine()); producer.send(message); } } public static void main(String[] args) throws Exception { //初始化 JMS 连接工厂 connectionFactory= new ActiveMQConnectionFactory (ActiveMQConnection.DEFAULT_USER,ActiveMQConnection.DEFAULT_PASSWORD,BROKER_URL); //从连接工厂中获取链接 connection=connectionFactory.createConnection(); //启动 connection.start(); // 创建session session= connection.createSession(true, Session.AUTO_ACKNOWLEDGE); // 从配置的Queue中获取消息目的地 destination=session.createQueue("TQueue"); //获取消息的发送者 messageProducer=session.createProducer(destination); //消息发送模式 是否持久化 messageProducer.setDeliveryMode(DeliveryMode.NON_PERSISTENT); //发送消息 sendMessage(session, messageProducer); //提交 session.commit(); } }
package com.wa.xwolf.sblog.jms; import javax.jms.Connection; import javax.jms.ConnectionFactory; import javax.jms.Destination; import javax.jms.MessageConsumer; import javax.jms.Session; import javax.jms.TextMessage; import org.apache.activemq.ActiveMQConnection; import org.apache.activemq.ActiveMQConnectionFactory; /** * 消息接收 * @author xwolf * */ public class Receiver { private static ConnectionFactory connectionFactory ; private static Connection connection; private static Session session ; private static String BROKER_URL="tcp://localhost:61616"; // 消息推送目的地 private static Destination destination; //消息消费者 (接收者) private static MessageConsumer messageConsumer; public static void main(String[] args) throws Exception{ //初始化 JMS 连接工厂 connectionFactory= new ActiveMQConnectionFactory (ActiveMQConnection.DEFAULT_USER,ActiveMQConnection.DEFAULT_PASSWORD,BROKER_URL); //从连接工厂中获取链接 connection=connectionFactory.createConnection(); //启动 connection.start(); // 创建session session= connection.createSession(true, Session.AUTO_ACKNOWLEDGE); // 从配置的Queue中获取消息目的地 destination=session.createQueue("TQueue"); messageConsumer= session.createConsumer(destination); while(true){ // 每隔10s接收接收 TextMessage message = (TextMessage) messageConsumer.receive(10000); if(message!=null){ System.out.println("ActiveMQ收到的消息:"+message.getText()); } } } }
控制台看到的统计信息:

P2P点对点消息模型:

发布/订阅模型:


浙公网安备 33010602011771号