01-消息中间件概述和ActiveMq入门
1.mq解决的问题
- 系统异步处理
- 应用解耦
- 流量削峰
- 日志处理
- 消息通信
2.消息中间件的2中模型
2.1 Point-to-Point(P2P) / 点对点 / 类比:送快递
特点:
+ 一个消费生产者必须有一个消息消费者。一对一的关系
+ 一个消息发送到queue中,如果mqserver重启,消息不会丢失(当然也可以设置为丢失。缺省是不会丢失的)
2.2 Topic/ 主题(发布订阅(Pub/Sub) )/类比:广播
特点:
+ 一个生产者生产的消息可以同时被多个消息消费者消费。一对多。
+ 一个消费者可以消费来自不同生产者的消息。
3. Java Messaging Service规范
3.1 JMS规范模型包含如下几个要素
- 连接工厂
- 获取连接
- 创建会话
- JMS的目的/broker
- 创建生产者
- 创建消费者
5. Hello ActiveMQ
5.1 原生api
package com.hs.gz.hellodemo.mq.demo;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.activemq.command.ActiveMQMessage;
/**
* 生产者
* @author hasee
*
*/
public class Producer {
private static final String USERNAME = ActiveMQConnection.DEFAULT_USER;
private static final String PASSWORD = ActiveMQConnection.DEFAULT_PASSWORD;
private static final String BROKEURL = "tcp://139.199.158.112:61616";
private static final int SENDNUM = 3;
public static void main(String[] args) throws Exception {
//工厂
ConnectionFactory factory;
//连接
Connection connection;
//会话
Session session;
//目的地
Destination destination;
//消费者
MessageProducer producer;
//指定用户名,密码和url来创建连接工厂
factory = new ActiveMQConnectionFactory(USERNAME,PASSWORD,BROKEURL);
//从连接工厂中获取丽连接
connection = factory.createConnection();
//从连接中创建session
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
/* 创建一个名为HelloWorld消息队列*/
destination = session.createQueue("HelloWorld");
/*往队列里面注册生产者*/
producer = session.createProducer(destination);
for (int i = 0; i < SENDNUM; i++) {
String msg = "发送消息"+i+" "+System.currentTimeMillis();
TextMessage textMessage = session.createTextMessage(msg);
producer.send(textMessage);
}
System.out.println("生成者生产ok.....");
producer.close();
session.close();
connection.close();
}
}
package com.hs.gz.hellodemo.mq.demo;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;
/**
* 消费者
* @author hasee
*
*/
public class Consumer {
/* 默认连接用户名 */
private static final String USERNAME = ActiveMQConnection.DEFAULT_USER;
/* 默认连接密码 */
private static final String PASSWORD = ActiveMQConnection.DEFAULT_PASSWORD;
/* 默认连接地址 */
private static final String BROKEURL = "tcp://139.199.158.112:61616";
public static void main(String[] args) throws Exception {
ConnectionFactory factory;
Connection connection;
Session session;
Destination destination = null;
MessageConsumer consumer;
factory = new ActiveMQConnectionFactory(USERNAME,PASSWORD,BROKEURL);
connection = factory.createConnection();
/* 启动连接*/
connection.start();
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
destination = session.createQueue("HelloWorld");
consumer = session.createConsumer(destination);
//一直监听mqserver,如果有待消费的消息就进行消费
Message message;
while((message = consumer.receive()) != null ) {
System.out.println("consumer..." + ((TextMessage)message).getText());
}
consumer.close();
session.close();
connection.close();
}
}
01-消息中间件概述和ActiveMq入门的更多相关文章
- 054 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 01 数组概述
054 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 01 数组概述 本文知识点:数组概述 为什么要学习数组? 实际问题: 比如我们要对学生的成绩进行排序,一个班级 ...
- ActiveMQ之一--ActiveMQ入门
MQ的消费-生产者模型的一个典型的代表,一端往消息队列中不断的写入消息,而另一端则可以读取或者订阅队列中的消息.MQ和JMS类似,但不同的是JMS是SUN JAVA消息中间件服务的一个标准和API定义 ...
- ActiveMQ入门练习
ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线.ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,尽管JMS规范出台已经是很久 ...
- 深入浅出 JMS(二) - ActiveMQ 入门指南
深入浅出 JMS(二) - ActiveMQ 入门指南 上篇博文深入浅出 JMS(一) – JMS 基本概念,我们介绍了消息通信的规范JMS,这篇博文介绍一款开源的 JMS 具体实现-- Active ...
- ActiveMQ 入门和与 Spring 整合
ActiveMQ 入门演示 activemq 依赖 <dependency> <groupId>org.apache.activemq</groupId> < ...
- Android快乐贪吃蛇游戏实战项目开发教程-01项目概述与目录
一.项目简介 贪吃蛇是一个很经典的游戏,也很适合用来学习.本教程将和大家一起做一个Android版的贪吃蛇游戏. 我已经将做好的案例上传到了应用宝,无病毒.无广告,大家可以放心下载下来把玩一下.应用宝 ...
- Java虚拟机JVM学习01 流程概述
Java虚拟机JVM学习01 流程概述 Java虚拟机与程序的生命周期 一个运行时的Java虚拟机(JVM)负责运行一个Java程序. 当启动一个Java程序时,一个虚拟机实例诞生:当程序关闭退出,这 ...
- 【Zigbee技术入门教程-01】Zigbee无线组网技术入门的学习路线
[Zigbee技术入门教程-01]Zigbee无线组网技术入门的学习路线 广东职业技术学院 欧浩源 一.引言 在物联网技术应用的知识体系中,Zigbee无线组网技术是非常重要的一环,也是大家感 ...
- jms - activeMQ入门案例
activeMQ入门案例 叨叨一波,很久没写博客了,最近比较慢,时间抽不出来,这个借口说的很尴尬...我知道作为一名合格的码农就必须养成每天一博客的习惯.希望友友们别像我这样懒,闲话不多时进入今天的主 ...
随机推荐
- Luogu 3943 星空
原题是CF79D Password 很妙的题. 首先我们发现区间操作不太好弄,我们想办法把它转化成单点操作,这样子处理的办法会多一点. 方法当然是差分了. 定义差分数组$b_i = a_i \^ a_ ...
- javaSE阶段中 关于Sring类方法的应用
String类中有很多常用的方法,今天就一些方法涉及到的一些常见题 做两个小Demo 其中一个要求如下: 获取指定字符串中,大写字母.小写字母.数字 的个数 题目分析 * 为了统计大写字母.小写字 ...
- 防恶意解析,禁止用IP访问网站的Apache设置 修改 httpd.conf 实现
一般来说,网站可以用域名和IP来访问.你的网站可以通过IP直接访问,本来这没什么问题,但是会有些隐患: 由于搜索引擎也会收录你的IP地址的页面,所以同一个页面搜索引擎会重复收录,造成页面的权重不如单个 ...
- Java之封装特性
Java中的三大特性:继承,封装,多态: 其中封装概念:封装是把过程和数据包围起来,对数据的访问只能通过已定义的接口. 面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治.封装的 对象 ...
- python--输出spwm的数组
python的功能是非常强大的,这个例子使用python编写的输出spwm数组(不对,在C语言或者其他语言叫做数组,在这里叫做list.)的程序,我们在单片机程序里调用这个程序,可以达到输出spwm波 ...
- windows10系统连接蓝牙鼠标自动断开解决方案
环境: Windows 10 企业版 2016 长期服务版 罗技M590 问题: 鼠标长时间未使用,会自动断开 解决步骤: 参考链接: https://zhidao.baidu.com/questio ...
- 如何使用Visual Studio 2010在数据库中生成随机测试数据
测试在项目中是很重要的一个环节,在Visual Studio 2010中,在测试方面已经有很好的支持了,比如有单元测试,负载测试等等.在数据测试的方面,Visual Studio 2010,还支持对数 ...
- 使用metasploit进行栈溢出攻击-4
有了漏洞我们就可以进行攻击了.首先我们需要了解metasploit的exploit模块,具体可以看 http://www.offensive-security.com/metasploit-unlea ...
- javascript 获取标签内的内容
js 获取标签内的内容 参考:这篇博客给了我很大的启发. http://www.cnblogs.com/breakdown/archive/2012/10/09/2716221.html 我遇到的问题 ...
- access + vb + asp 遇到一些问题的总结
Data Base access + vb + asp 遇到一些问题的总结 1.asp中sql语句: select * from users whre name=’张三‘ and addTime=# ...