activeMQ Jms Demo
概述
详细
一、什么是ActiveMQ
百度解释:
ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中间仍然扮演着特殊的地位。
https://baike.baidu.com/item/ActiveMQ/7889688?fr=aladdin
二、安装ActiveMQ
windows
访问ActiveMQ官网下载ActiveMq
下载完毕后,直接解压即可,然后进入bin目录,选择运行位数(32位,64位)
1)可以点击InstallService.bat 直接启动
2)也可以点击activemq.bat 安装到window服务,每次电脑启动时就会自动启动
三、访问ActiveMQ
打开浏览器输入:http://127.0.0.1:8161 如下图,登录的名称和密码都是:admin
看到上图即代表登录成功了!!!
四、编写demo代码
Maven项目结构:
代码截图:
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <groupId>com.zy.jms</groupId>
<artifactId>jms</artifactId>
<version>1.0-SNAPSHOT</version> <dependencies>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-all</artifactId>
<version>5.9.0</version>
</dependency>
</dependencies> </project>
生产者:AppProducer
package com.zy.jsm.queue; import org.apache.activemq.ActiveMQConnectionFactory; import javax.jms.*; /**
* Created by Yan on 2017/9/12.
*/
public class AppProducer { private static final String url = "tcp://127.0.0.1:61616";
private static final String queueName = "queue_message"; public static void main(String[] args) throws JMSException {
//1.创建连接工场
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(url);
//2.创建连接
Connection connection = connectionFactory.createConnection();
//3.启动连接
connection.start();
//4.创建会话
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//5.创建一个目标
Destination destination = session.createTopic(queueName);
//6.创建生产者
MessageProducer producer = session.createProducer(destination);
producer.setDeliveryMode(DeliveryMode.PERSISTENT);
for (int i = 0; i < 100; i++) {
//7.创建消息
TextMessage textMessage = session.createTextMessage("activeMQ" + i);
producer.send(textMessage);
}
System.out.print("所有消息已经全部发送完了");
connection.close();
}
}
消费者:AppCusumer
package com.zy.jsm.queue; import org.apache.activemq.ActiveMQConnectionFactory; import javax.jms.*; /**
* Created by Yan on 2017/9/12.
*/
public class AppConsumer {
private static final String url = "tcp://127.0.0.1:61616";
private static final String queueName = "queue_message"; public static void main(String[] args) throws JMSException {
//1.创建连接工场
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(url);
//2.创建连接
Connection connection = connectionFactory.createConnection();
//3.启动连接
connection.start();
//4.创建会话
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//5.创建一个目标
Destination destination = session.createQueue(queueName);
//6.创建消费者
MessageConsumer consumer = session.createConsumer(destination);
//7.创建一个监听器
consumer.setMessageListener(new MessageListener() {
public void onMessage(Message message) {
TextMessage textMessage = (TextMessage) message;
try {
System.out.println("接收消息:" + textMessage.getText());
} catch (JMSException e) {
e.printStackTrace();
}
}
});
//connection.close();
}
}
五、说明
代码是演示的队列模式,还有一种是主题模式
如果要用主题模式可以修改代码码如下:
Destination destination = session.createQueue(queueName);
改为:
Destination destination = session.createTopic(topicName);
即可!!!
设置持久化:
producer.setDeliveryModel(DeliveryMode.PERSISTENT);
六、比较
队列模式:在点对点的传输方式中,消息数据被持久化,每条消息都能被消费,没有监听QUEUE地址也能被消费,数据不会丢失,一对一的发布接受策略,保证数据完整。
主题模式:在发布订阅消息方式中,消息是无状态的,不保证每条消息被消费,只有监听该TOPIC地址才能收到消息并消费,否则该消息将会丢失。一对多的发布接受策略,可以同时消费多个消息。
注:本文著作权归作者,由demo大师发表,拒绝转载,转载需要作者授权
activeMQ Jms Demo的更多相关文章
- ActiveMQ JMS 项目 基于 Maven 搭建 部署
JAVA版本: IntellJ IDEA 版本: IntelliJ IDEA 2017.2Build #IU-172.3317.76, built on July 15, 2017Licensed t ...
- 中间件 activeMQ Jms Java Demo
一.什么是ActiveMQ 百度解释: ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线.ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provi ...
- ActiveMQ JMS 在发邮件中的使用
ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线.ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,尽管JMS规范出台已经是很久 ...
- 消息中间件--ActiveMQ&JMS消息服务
### 消息中间件 ### ---------- **消息中间件** 1. 消息中间件的概述 2. 消息中间件的应用场景 * 异步处理 * 应用解耦 * 流量削峰 * 消息通信 --------- ...
- activemq jms使用
activemq 是 基于 jms 协议的 消息队列 消息 流程: jsm 的 消息流程鼻尖简单 生产者发送消息到目的地,消费者 监听这个目的地,然后收到消息. 相比 amqp 的 消息流程简单很多 ...
- 使用Jmeter创建ActiveMQ JMS POINT TO POINT请求,环境搭建、请求创建、插件安装、监听服务器资源等
转自:http://www.cnblogs.com/qianyiliushang/p/4348584.html 准备工作: 安装JDK,推荐使用1.7以上版本,并设置JAVA_HOME 下载Jmete ...
- 使用Jmeter(三十)针对ActiveMQ JMS POINT TO POINT压力测试(转载)
转载自 http://www.cnblogs.com/yangxia-test 准备工作 针对JMS类型的Sampler,需要额外的jar包(这里用的是apache ActiveMQ,将下载的AMQ ...
- tomcat监听activemq jms配置
当从webservice接收到信息的时候,消息生产者producer立刻把收到的消息放入到jms里面,消费者cusomer这时要设置一个监听,当生产者发送消息时,只要消息被发出来,消费者就会接收到消息 ...
- ActiveMQ JMS实现消息发送
一.创建配置消息发送接收目的地. ActiveMQ中间件地址 JMS_BROKER_URL=failover://(tcp://192.168.1.231:61616) QUEUE_BUSP_TP_S ...
随机推荐
- JDK源码(1.7) -- java.util.Deque<E>
java.util.Deque<E> 源码分析(JDK1.7) -------------------------------------------------------------- ...
- PYPY_GC
Author:Jin Date: 2014-7-8 http://doc.pypy.org/en/latest/windows.html http://www.pypy.org/download.ht ...
- RTL8188EUS带天线的WiFi模块
http://www.liuliutech.com/ProductShow.asp?ID=121 一,公司介绍瑞昱(REALTEK)半导体成立于1987年,位于台湾[硅谷]的新竹科学园区.凭借着7位创 ...
- Read UNIQUE ID and flash size method for stm32
/* 读取stm32的unique id 与 flash size */ /* func: unsigned int Read_UniqueID_Byte(unsigned char offset) ...
- Process ID, Process handle, Window handle
http://forums.codeguru.com/showthread.php?392273-RESOLVED-How-to-get-window-s-HWND-from-it-s-process ...
- 图形图像的绘制 GandyDraw
源代码:下载地址, http://pan.baidu.com/s/1eQIzj3c 具体在下面的这个地方找,
- CentOS,Fedora,Debian,Ubuntu,SuSE——我到底爱谁
主观情绪上,一直都不是特别喜欢RedHat,虽然它是毋庸置疑的老大,其实我并不介意有人说我肤浅,说这话的理由简单,redhat.com发布RedHat 9(简写为RH9)后,不再开发RedHat 10 ...
- 关于comparator接口和comparable接口以及它们各自的方法compare()和compareTo()
在今天做的LeetCode的题中有两道都出现了利用接口实现对象的排序.两题的相关链接: 1.利用comparable接口对对象排序 2.利用comparator接口实现排序 因为之前都没接触过这两个接 ...
- ASP.NET 5 Beta6发布了(翻译)
感觉就好像我们刚刚发布了一个版本,现在我们又要发布一个新的版本.开发团队通过努力工作在Visual Studio2015的正式版上提交使用ASP.NET 5开发工具的上的更新以及库的更新.新的版本为b ...
- Spark RDD API扩展开发
原文链接: Spark RDD API扩展开发(1) Spark RDD API扩展开发(2):自定义RDD 我们都知道,Apache Spark内置了很多操作数据的API.但是很多时候,当我们在现实 ...