ActiveMQ (二) JMS入门
JMS入门
前提:安装好了ActiveMQ ActiveMQ安装
Demo结构:
首先pom.xml引入依赖:
- <dependency>
- <groupId>org.apache.activemq</groupId>
- <artifactId>activemq-client</artifactId>
- <version>5.13.4</version>
- </dependency>
点对点模式:
消息生产者QueueProducer:
- package com.zy.demo.queue;
- import org.apache.activemq.ActiveMQConnectionFactory;
- import javax.jms.*;
- /**
- * 点对点模式 生产者
- */
- public class QueueProducer {
- public static void main(String[] args) throws Exception {
- //1.创建连接工厂
- ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.25.128:61616");
- //2.获取连接
- Connection connection = connectionFactory.createConnection();
- //3.启动连接
- connection.start();
- //4.获取session (参数1:是否启动事务,参数2:消息确认模式)
- Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
- //5.创建队列对象
- Queue queue = session.createQueue("test-queue");
- //6.创建消息生产者
- MessageProducer producer = session.createProducer(queue);
- //7.创建消息
- TextMessage textMessage = session.createTextMessage("点对点模式");
- //8.发送消息
- producer.send(textMessage);
- //9.关闭资源
- producer.close();
- session.close();
- connection.close();
- }
- }
消息消费者QueueConsumer:
- package com.zy.demo.queue;
- import org.apache.activemq.ActiveMQConnectionFactory;
- import javax.jms.*;
- /**
- * 点对点模式 消费者
- */
- public class QueueConsumer {
- public static void main(String[] args) throws Exception {
- //1.创建连接工厂
- ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.25.128:61616");
- //2.获取连接
- Connection connection = connectionFactory.createConnection();
- //3.启动连接
- connection.start();
- //4.获取session (参数1:是否启动事务,参数2:消息确认模式)
- Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
- //5.创建队列对象
- Queue queue = session.createQueue("test-queue");
- //6.创建消息消费
- MessageConsumer consumer = session.createConsumer(queue);
- //7.监听消息
- consumer.setMessageListener(new MessageListener() {
- public void onMessage(Message message) {
- TextMessage textMessage = (TextMessage) message;
- try {
- System.out.println("接收到消息:" + textMessage.getText());
- } catch (JMSException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- });
- //8.等待键盘输入
- System.in.read();
- //9.关闭资源
- consumer.close();
- session.close();
- connection.close();
- }
- }
发布订阅模式:
消息生产者TopicProducer:
- package com.zy.demo.toptic;
- import org.apache.activemq.ActiveMQConnectionFactory;
- import javax.jms.*;
- /**
- * 发布/订阅模式 生产者
- */
- public class TopicProducer {
- public static void main(String[] args) throws Exception {
- //1.创建连接工厂
- ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.25.128:61616");
- //2.获取连接
- Connection connection = connectionFactory.createConnection();
- //3.启动连接
- connection.start();
- //4.获取session (参数1:是否启动事务,参数2:消息确认模式)
- Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
- //5.创建主题对象
- Topic topic = session.createTopic("test-topic");
- //6.创建消息生产者
- MessageProducer producer = session.createProducer(topic);
- //7.创建消息
- TextMessage textMessage = session.createTextMessage("发布订阅模式");
- //8.发送消息
- producer.send(textMessage);
- //9.关闭资源
- producer.close();
- session.close();
- connection.close();
- }
- }
消息消费者TopicConsumer:
- package com.zy.demo.toptic;
- import org.apache.activemq.ActiveMQConnectionFactory;
- import javax.jms.*;
- public class TopicConsumer {
- public static void main(String[] args) throws Exception {
- //1.创建连接工厂
- ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.25.128:61616");
- //2.获取连接
- Connection connection = connectionFactory.createConnection();
- //3.启动连接
- connection.start();
- //4.获取session (参数1:是否启动事务,参数2:消息确认模式)
- Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
- //5.创建主题对象
- //Queue queue = session.createQueue("test-queue");
- Topic topic = session.createTopic("test-topic");
- //6.创建消息消费
- MessageConsumer consumer = session.createConsumer(topic);
- //7.监听消息
- consumer.setMessageListener(new MessageListener() {
- public void onMessage(Message message) {
- TextMessage textMessage = (TextMessage) message;
- try {
- System.out.println("接收到消息:" + textMessage.getText());
- } catch (JMSException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- });
- //8.等待键盘输入
- System.in.read();
- //9.关闭资源
- consumer.close();
- session.close();
- connection.close();
- }
- }
ActiveMQ (二) JMS入门的更多相关文章
- ActiveMQ (三) Spring整合JMS入门
Spring整合JMS入门 前提:安装好了ActiveMQ ActiveMQ安装 Demo结构: 生产者项目springjms_producer: pom.xml <?xml versio ...
- ActiveMQ:JMS开源框架入门介绍
介绍基本的JMS概念与开源的JMS框架ActiveMQ应用,内容涵盖一下几点: 基本的JMS概念 JMS的消息模式 介绍ActiveMQ 一个基于ActiveMQ的JMS例子程序 一:JMS基本概念 ...
- ActiveMQ基本详解与总结& 消息队列-推/拉模式学习 & ActiveMQ及JMS学习
转自:https://www.cnblogs.com/Survivalist/p/8094069.html ActiveMQ基本详解与总结 基本使用可以参考https://www.cnblogs.co ...
- 消息中间件 JMS入门
1. JMS入门 1.1消息中间件 什么是消息中间件 消息中间件利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成.通过提供消息传递和消息排队模型,它可以在分布式环 ...
- XML学习总结(二)——XML入门
XML学习总结(二)——XML入门 一.XML语法学习 学习XML语法的目的就是编写XML 一个XML文件分为如下几部分内容: 文档声明 元素 属性 注释 CDATA区 .特殊字符 处理指令(proc ...
- Spring+SpringMVC+MyBatis深入学习及搭建(十二)——SpringMVC入门程序(一)
转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/6999743.html 前面讲到:Spring+SpringMVC+MyBatis深入学习及搭建(十一)——S ...
- 基于tensorflow的MNIST手写数字识别(二)--入门篇
http://www.jianshu.com/p/4195577585e6 基于tensorflow的MNIST手写字识别(一)--白话卷积神经网络模型 基于tensorflow的MNIST手写数字识 ...
- 转:JAVAWEB开发之权限管理(二)——shiro入门详解以及使用方法、shiro认证与shiro授权
原文地址:JAVAWEB开发之权限管理(二)——shiro入门详解以及使用方法.shiro认证与shiro授权 以下是部分内容,具体见原文. shiro介绍 什么是shiro shiro是Apache ...
- tensorflow学习笔记二:入门基础 好教程 可用
http://www.cnblogs.com/denny402/p/5852083.html tensorflow学习笔记二:入门基础 TensorFlow用张量这种数据结构来表示所有的数据.用一 ...
随机推荐
- openGL 3.3+ 场景渲染
这个渲染程序是研一下学期的计算机图形学课程大作业,花了两三周学习使用了下 openGL 3.3+ 库,整合出了这个渲染程序,完成于 2013/07/05. 相对于老版本的库,新版本更开放,给了程序员更 ...
- 解决 Amoeba连接mysql出错 解决方案
今天配置mysql的主从复制 用到了Amoeba.从安装到启动服务,我深深地体会到学运维的不易. 首先是 安装错误 的解决,连接错误 的兄弟可以直接往下拉. 安装错误 1.出现 JAVA_HOM ...
- IDEA 新建.vue格式的文件
1.Ctrl+Alt+S 2. <template> <div> {{msg}} </div> </template> <style> bo ...
- tlflearn 编码解码器 ——数据降维用
# -*- coding: utf-8 -*- """ Auto Encoder Example. Using an auto encoder on MNIST hand ...
- element-ui dialog组件添加可拖拽位置 可拖拽宽高
edge浏览器下作的gifhttp://www.lanourteam.com/%E6... 有几个点需要注意一下 每个弹窗都要有唯一dom可操作 指令可以做到 拖拽时要添加可拖拽区块 header 由 ...
- 09-THREE.JS 物体缩放,坐标,旋转,位移,是否可见
<!DOCTYPE html> <html> <head> <title></title> <script src="htt ...
- 四种launchMode
注意:如果在一个singleTop或者singleInstance的ActivityA中通过startActivityForResult()方法来启动另外一个ActivityB,那么系统将直接返回Ac ...
- mac 上 mamp 配置虚拟主机 具体过程 ?
https://www.zhihu.com/question/32320396 mac 上 mamp 配置虚拟主机 具体过程 ? 按照哪些配置什么的 都搞好了 但是还不好 配置的主机 制定的目录 还是 ...
- win8.1系统相关
win8.1系统相关 信息时代,系统更新速度非常快,十一月初,同事在网上花5元买了一个win8.1系统激活码,之后两周,我电脑由于系统故障,准备重装系统,借助他的系统,但无法激活,借用他购买的账号也不 ...
- YARN的ACL
修改完了资源池的权限之后,发现无法查看日志了.报错: User [dr.who] is not authorized to view the logs for... 即使把资源池的权限设置为了*(所有 ...