package dzs.com.ActiveMQ.demo; import java.util.concurrent.atomic.AtomicInteger; import javax.jms.Connection; import javax.jms.ConnectionFactory; import javax.jms.JMSException; import javax.jms.MessageConsumer; import javax.jms.Queue; import javax.jms.Session; import javax.jms.TextMessage; import org.apache.activemq.ActiveMQConnection; import org.apache.activemq.ActiveMQConnectionFactory; /** * 消费者 * @Description: TODO * @author dzs * @date 2019年4月22日 上午11:20:41 * @version V1.0 * @copyright 广州市瑞智系统集成有限公司 Copyright (c) 2018 */ public class Comsumer { private static final String USERNAME = ActiveMQConnection.DEFAULT_USER; private static final String PASSWORD = ActiveMQConnection.DEFAULT_PASSWORD; private static final String BROKEN_URL = ActiveMQConnection.DEFAULT_BROKER_URL; ConnectionFactory connectionFactory; Connection connection; Session session; ThreadLocal<MessageConsumer> threadLocal = new ThreadLocal<>(); AtomicInteger count = new AtomicInteger(); public void init(){ try { connectionFactory = new ActiveMQConnectionFactory(USERNAME,PASSWORD,BROKEN_URL); connection = connectionFactory.createConnection(); connection.start(); session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE); } catch (JMSException e) { e.printStackTrace(); } } public void getMessage(String disname){ try { Queue queue = session.createQueue(disname); MessageConsumer consumer = null; if(threadLocal.get()!=null){ consumer = threadLocal.get(); }else{ consumer = session.createConsumer(queue); threadLocal.set(consumer); } while(true){ Thread.sleep(1000); TextMessage msg = (TextMessage) consumer.receive(); if(msg!=null) { msg.acknowledge(); System.out.println(Thread.currentThread().getName() +": Consumer:我是消费者,我正在消费Msg"+msg.getText()+"--->" +count.getAndIncrement()); }else { break; } } } catch (JMSException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } } } package dzs.com.ActiveMQ.demo; import java.util.concurrent.atomic.AtomicInteger; import javax.jms.Connection; import javax.jms.ConnectionFactory; import javax.jms.JMSException; import javax.jms.MessageProducer; import javax.jms.Queue; import javax.jms.Session; import javax.jms.TextMessage; import org.apache.activemq.ActiveMQConnection; import org.apache.activemq.ActiveMQConnectionFactory; /** * 生产者 * @Description: TODO * @author dzs * @date 2019年4月22日 上午11:20:05 * @version V1.0 * @copyright 广州市瑞智系统集成有限公司 Copyright (c) 2018 */ public class Producter { //ActiveMq 的默认用户名 private static final String USERNAME = ActiveMQConnection.DEFAULT_USER; //ActiveMq 的默认登录密码 private static final String PASSWORD = ActiveMQConnection.DEFAULT_PASSWORD; //ActiveMQ 的链接地址 private static final String BROKEN_URL = ActiveMQConnection.DEFAULT_BROKER_URL; AtomicInteger count = new AtomicInteger(0); //链接工厂 ConnectionFactory connectionFactory; //链接对象 Connection connection; //事务管理 Session session; ThreadLocal<MessageProducer> threadLocal = new ThreadLocal<>(); public void init(){ try { //创建一个链接工厂 connectionFactory = new ActiveMQConnectionFactory(USERNAME,PASSWORD,BROKEN_URL); //从工厂中创建一个链接 connection = connectionFactory.createConnection(); //开启链接 connection.start(); //创建一个事务(这里通过参数可以设置事务的级别) session = connection.createSession(true,Session.SESSION_TRANSACTED); } catch (JMSException e) { e.printStackTrace(); } } public void sendMessage(String disname){ try { //创建一个消息队列 Queue queue = session.createQueue(disname); //消息生产者 MessageProducer messageProducer = null; if(threadLocal.get()!=null){ messageProducer = threadLocal.get(); }else{ messageProducer = session.createProducer(queue); threadLocal.set(messageProducer); } while(true){ Thread.sleep(1000); int num = count.getAndIncrement(); //创建一条消息 TextMessage msg = session.createTextMessage(Thread.currentThread().getName()+ "productor:我是大帅哥,我现在正在生产东西!,count:"+num); System.out.println(Thread.currentThread().getName()+ "productor:我是大帅哥,我现在正在生产东西!,count:"+num); //发送消息 messageProducer.send(msg); //提交事务 session.commit(); } } catch (JMSException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } } } package dzs.com.ActiveMQ.demo; public class TestConsumer { public static void main(String[] args){ Comsumer comsumer = new Comsumer(); comsumer.init(); TestConsumer testConsumer = new TestConsumer(); new Thread(testConsumer.new ConsumerMq(comsumer)).start(); new Thread(testConsumer.new ConsumerMq(comsumer)).start(); new Thread(testConsumer.new ConsumerMq(comsumer)).start(); new Thread(testConsumer.new ConsumerMq(comsumer)).start(); new Thread(testConsumer.new ConsumerMq(comsumer)).start(); new Thread(testConsumer.new ConsumerMq(comsumer)).start(); new Thread(testConsumer.new ConsumerMq(comsumer)).start(); new Thread(testConsumer.new ConsumerMq(comsumer)).start(); new Thread(testConsumer.new ConsumerMq(comsumer)).start(); new Thread(testConsumer.new ConsumerMq(comsumer)).start(); } private class ConsumerMq implements Runnable{ Comsumer comsumer; public ConsumerMq(Comsumer comsumer){ this.comsumer = comsumer; } @Override public void run() { while(true){ try { comsumer.getMessage("dzs-MQ"); Thread.sleep(10000); } catch (InterruptedException e) { e.printStackTrace(); } } } } } package dzs.com.ActiveMQ.demo; public class TestMq { public static void main(String[] args){ Producter producter = new Producter(); producter.init(); TestMq testMq = new TestMq(); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } //Thread 1 new Thread(testMq.new ProductorMq(producter)).start(); //Thread 2 new Thread(testMq.new ProductorMq(producter)).start(); //Thread 3 new Thread(testMq.new ProductorMq(producter)).start(); //Thread 4 new Thread(testMq.new ProductorMq(producter)).start(); //Thread 5 new Thread(testMq.new ProductorMq(producter)).start(); } private class ProductorMq implements Runnable{ Producter producter; public ProductorMq(Producter producter){ this.producter = producter; } @Override public void run() { while(true){ try { producter.sendMessage("dzs-MQ"); Thread.sleep(10000); } catch (InterruptedException e) { e.printStackTrace(); } } } } }
































- 粉丝: 0
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- A210基于springboot+vue的智慧农业专家远程指导系统(LW文档+完整前后端代码+sql脚本+开发文档+全套软件).rar
- A222基于springboot+vue的商场多功能折扣系统(完整前后端代码+sql脚本+开发文档+全套软件).rar
- A223基于springboot+vue的校园车辆管理系统(LW文档+完整前后端代码+sql脚本+开发文档+全套软件).rar
- A221基于springboot+vue的小区车辆管理系统(LW文档+PPT+完整前后端代码+sql脚本+开发文档+全套软件).rar
- A213基于springboot+vue酒店管理系统(LW文档+PPT+完整前后端代码+sql脚本+开发文档+全套软件).rar
- A224基于springboot+vue的快递分拣管理系统(完整前后端代码+sql脚本+开发文档+全套软件).rar
- A215基于springboot+vue的智慧旅游系统(LW文档+完整前后端代码+sql脚本+开发文档+全套软件).rar
- A214基于springboot+vue的兼职发布平台的设计与实现(LW文档+PPT+完整前后端代码+sql脚本+开发文档+全套软件).rar
- A226基于ssm+vue的宠物饲养(LW文档+完整前后端代码+sql脚本+开发文档+全套软件).rar
- A225基于springboot+vue的校园共享系统(完整前后端代码+sql脚本+开发文档+全套软件).rar
- A229基于SSM+TCP协议的在线聊天室设计与实现(LW文档+PPT+完整前后端代码+sql脚本+开发文档+全套软件).rar
- A227基于SSM+vue的手机商城管理系统的设计与实现(完整前后端代码+sql脚本+开发文档+全套软件).rar
- A228基于SSM+vue的线上花店的设计与实现(LW文档+完整前后端代码+sql脚本+开发文档+全套软件).rar
- 基于C语言实现内存型键值存储数据库项目-源码包含红黑树B树哈希表跳表等多种数据结构实现与网络通信模块-用于高性能数据缓存与快速查询场景-技术栈涵盖C语言编程Linux环境Socke.zip
- A231基于SSM+vue的高校就业管理系统设计与实现(LW文档+完整前后端代码+sql脚本+开发文档+全套软件).rar
- 【Java毕业项目选题】基于springboot+vue的软件研发过程中的缺陷管理系统的设计与实现(LW文档+完整前后端代码+sql脚本+开发文档+全套软件).rar


