JMS入门

前提:安装好了ActiveMQ  ActiveMQ安装

Demo结构:

首先pom.xml引入依赖:

  1. <dependency>
  2. <groupId>org.apache.activemq</groupId>
  3. <artifactId>activemq-client</artifactId>
  4. <version>5.13.4</version>
  5. </dependency>

点对点模式:

消息生产者QueueProducer:

  1. package com.zy.demo.queue;
  2.  
  3. import org.apache.activemq.ActiveMQConnectionFactory;
  4.  
  5. import javax.jms.*;
  6.  
  7. /**
  8. * 点对点模式 生产者
  9. */
  10. public class QueueProducer {
  11. public static void main(String[] args) throws Exception {
  12. //1.创建连接工厂
  13. ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.25.128:61616");
  14. //2.获取连接
  15. Connection connection = connectionFactory.createConnection();
  16. //3.启动连接
  17. connection.start();
  18. //4.获取session (参数1:是否启动事务,参数2:消息确认模式)
  19. Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
  20. //5.创建队列对象
  21. Queue queue = session.createQueue("test-queue");
  22. //6.创建消息生产者
  23. MessageProducer producer = session.createProducer(queue);
  24. //7.创建消息
  25. TextMessage textMessage = session.createTextMessage("点对点模式");
  26. //8.发送消息
  27. producer.send(textMessage);
  28. //9.关闭资源
  29. producer.close();
  30. session.close();
  31. connection.close();
  32. }
  33. }

消息消费者QueueConsumer:

  1. package com.zy.demo.queue;
  2.  
  3. import org.apache.activemq.ActiveMQConnectionFactory;
  4.  
  5. import javax.jms.*;
  6.  
  7. /**
  8. * 点对点模式 消费者
  9. */
  10. public class QueueConsumer {
  11. public static void main(String[] args) throws Exception {
  12. //1.创建连接工厂
  13. ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.25.128:61616");
  14. //2.获取连接
  15. Connection connection = connectionFactory.createConnection();
  16. //3.启动连接
  17. connection.start();
  18. //4.获取session (参数1:是否启动事务,参数2:消息确认模式)
  19. Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
  20. //5.创建队列对象
  21. Queue queue = session.createQueue("test-queue");
  22. //6.创建消息消费
  23. MessageConsumer consumer = session.createConsumer(queue);
  24.  
  25. //7.监听消息
  26. consumer.setMessageListener(new MessageListener() {
  27. public void onMessage(Message message) {
  28. TextMessage textMessage = (TextMessage) message;
  29. try {
  30. System.out.println("接收到消息:" + textMessage.getText());
  31. } catch (JMSException e) {
  32. // TODO Auto-generated catch block
  33. e.printStackTrace();
  34. }
  35. }
  36. });
  37. //8.等待键盘输入
  38. System.in.read();
  39. //9.关闭资源
  40. consumer.close();
  41. session.close();
  42. connection.close();
  43. }
  44. }

发布订阅模式:

消息生产者TopicProducer:

  1. package com.zy.demo.toptic;
  2.  
  3. import org.apache.activemq.ActiveMQConnectionFactory;
  4.  
  5. import javax.jms.*;
  6.  
  7. /**
  8. * 发布/订阅模式 生产者
  9. */
  10. public class TopicProducer {
  11. public static void main(String[] args) throws Exception {
  12. //1.创建连接工厂
  13. ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.25.128:61616");
  14. //2.获取连接
  15. Connection connection = connectionFactory.createConnection();
  16. //3.启动连接
  17. connection.start();
  18. //4.获取session (参数1:是否启动事务,参数2:消息确认模式)
  19. Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
  20. //5.创建主题对象
  21. Topic topic = session.createTopic("test-topic");
  22. //6.创建消息生产者
  23. MessageProducer producer = session.createProducer(topic);
  24. //7.创建消息
  25. TextMessage textMessage = session.createTextMessage("发布订阅模式");
  26. //8.发送消息
  27. producer.send(textMessage);
  28. //9.关闭资源
  29. producer.close();
  30. session.close();
  31. connection.close();
  32. }
  33. }

消息消费者TopicConsumer:

  1. package com.zy.demo.toptic;
  2.  
  3. import org.apache.activemq.ActiveMQConnectionFactory;
  4.  
  5. import javax.jms.*;
  6.  
  7. public class TopicConsumer {
  8. public static void main(String[] args) throws Exception {
  9. //1.创建连接工厂
  10. ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.25.128:61616");
  11. //2.获取连接
  12. Connection connection = connectionFactory.createConnection();
  13. //3.启动连接
  14. connection.start();
  15. //4.获取session (参数1:是否启动事务,参数2:消息确认模式)
  16. Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
  17. //5.创建主题对象
  18. //Queue queue = session.createQueue("test-queue");
  19. Topic topic = session.createTopic("test-topic");
  20. //6.创建消息消费
  21. MessageConsumer consumer = session.createConsumer(topic);
  22.  
  23. //7.监听消息
  24. consumer.setMessageListener(new MessageListener() {
  25. public void onMessage(Message message) {
  26. TextMessage textMessage = (TextMessage) message;
  27. try {
  28. System.out.println("接收到消息:" + textMessage.getText());
  29. } catch (JMSException e) {
  30. // TODO Auto-generated catch block
  31. e.printStackTrace();
  32. }
  33. }
  34. });
  35. //8.等待键盘输入
  36. System.in.read();
  37. //9.关闭资源
  38. consumer.close();
  39. session.close();
  40. connection.close();
  41. }
  42. }

ActiveMQ (二) JMS入门的更多相关文章

  1. ActiveMQ (三) Spring整合JMS入门

    Spring整合JMS入门 前提:安装好了ActiveMQ  ActiveMQ安装 Demo结构:   生产者项目springjms_producer: pom.xml <?xml versio ...

  2. ActiveMQ:JMS开源框架入门介绍

    介绍基本的JMS概念与开源的JMS框架ActiveMQ应用,内容涵盖一下几点: 基本的JMS概念 JMS的消息模式 介绍ActiveMQ 一个基于ActiveMQ的JMS例子程序 一:JMS基本概念 ...

  3. ActiveMQ基本详解与总结& 消息队列-推/拉模式学习 & ActiveMQ及JMS学习

    转自:https://www.cnblogs.com/Survivalist/p/8094069.html ActiveMQ基本详解与总结 基本使用可以参考https://www.cnblogs.co ...

  4. 消息中间件 JMS入门

    1. JMS入门 1.1消息中间件 什么是消息中间件 消息中间件利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成.通过提供消息传递和消息排队模型,它可以在分布式环 ...

  5. XML学习总结(二)——XML入门

    XML学习总结(二)——XML入门 一.XML语法学习 学习XML语法的目的就是编写XML 一个XML文件分为如下几部分内容: 文档声明 元素 属性 注释 CDATA区 .特殊字符 处理指令(proc ...

  6. Spring+SpringMVC+MyBatis深入学习及搭建(十二)——SpringMVC入门程序(一)

    转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/6999743.html 前面讲到:Spring+SpringMVC+MyBatis深入学习及搭建(十一)——S ...

  7. 基于tensorflow的MNIST手写数字识别(二)--入门篇

    http://www.jianshu.com/p/4195577585e6 基于tensorflow的MNIST手写字识别(一)--白话卷积神经网络模型 基于tensorflow的MNIST手写数字识 ...

  8. 转:JAVAWEB开发之权限管理(二)——shiro入门详解以及使用方法、shiro认证与shiro授权

    原文地址:JAVAWEB开发之权限管理(二)——shiro入门详解以及使用方法.shiro认证与shiro授权 以下是部分内容,具体见原文. shiro介绍 什么是shiro shiro是Apache ...

  9. tensorflow学习笔记二:入门基础 好教程 可用

    http://www.cnblogs.com/denny402/p/5852083.html tensorflow学习笔记二:入门基础   TensorFlow用张量这种数据结构来表示所有的数据.用一 ...

随机推荐

  1. openGL 3.3+ 场景渲染

    这个渲染程序是研一下学期的计算机图形学课程大作业,花了两三周学习使用了下 openGL 3.3+ 库,整合出了这个渲染程序,完成于 2013/07/05. 相对于老版本的库,新版本更开放,给了程序员更 ...

  2. 解决 Amoeba连接mysql出错 解决方案

    今天配置mysql的主从复制 用到了Amoeba.从安装到启动服务,我深深地体会到学运维的不易. 首先是  安装错误  的解决,连接错误  的兄弟可以直接往下拉. 安装错误 1.出现 JAVA_HOM ...

  3. IDEA 新建.vue格式的文件

    1.Ctrl+Alt+S 2. <template> <div> {{msg}} </div> </template> <style> bo ...

  4. tlflearn 编码解码器 ——数据降维用

    # -*- coding: utf-8 -*- """ Auto Encoder Example. Using an auto encoder on MNIST hand ...

  5. element-ui dialog组件添加可拖拽位置 可拖拽宽高

    edge浏览器下作的gifhttp://www.lanourteam.com/%E6... 有几个点需要注意一下 每个弹窗都要有唯一dom可操作 指令可以做到 拖拽时要添加可拖拽区块 header 由 ...

  6. 09-THREE.JS 物体缩放,坐标,旋转,位移,是否可见

    <!DOCTYPE html> <html> <head> <title></title> <script src="htt ...

  7. 四种launchMode

    注意:如果在一个singleTop或者singleInstance的ActivityA中通过startActivityForResult()方法来启动另外一个ActivityB,那么系统将直接返回Ac ...

  8. mac 上 mamp 配置虚拟主机 具体过程 ?

    https://www.zhihu.com/question/32320396 mac 上 mamp 配置虚拟主机 具体过程 ? 按照哪些配置什么的 都搞好了 但是还不好 配置的主机 制定的目录 还是 ...

  9. win8.1系统相关

    win8.1系统相关 信息时代,系统更新速度非常快,十一月初,同事在网上花5元买了一个win8.1系统激活码,之后两周,我电脑由于系统故障,准备重装系统,借助他的系统,但无法激活,借用他购买的账号也不 ...

  10. YARN的ACL

    修改完了资源池的权限之后,发现无法查看日志了.报错: User [dr.who] is not authorized to view the logs for... 即使把资源池的权限设置为了*(所有 ...