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入门的更多相关文章

  1. 054 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 01 数组概述

    054 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 01 数组概述 本文知识点:数组概述 为什么要学习数组? 实际问题: 比如我们要对学生的成绩进行排序,一个班级 ...

  2. ActiveMQ之一--ActiveMQ入门

    MQ的消费-生产者模型的一个典型的代表,一端往消息队列中不断的写入消息,而另一端则可以读取或者订阅队列中的消息.MQ和JMS类似,但不同的是JMS是SUN JAVA消息中间件服务的一个标准和API定义 ...

  3. ActiveMQ入门练习

    ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线.ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,尽管JMS规范出台已经是很久 ...

  4. 深入浅出 JMS(二) - ActiveMQ 入门指南

    深入浅出 JMS(二) - ActiveMQ 入门指南 上篇博文深入浅出 JMS(一) – JMS 基本概念,我们介绍了消息通信的规范JMS,这篇博文介绍一款开源的 JMS 具体实现-- Active ...

  5. ActiveMQ 入门和与 Spring 整合

    ActiveMQ 入门演示 activemq 依赖 <dependency> <groupId>org.apache.activemq</groupId> < ...

  6. Android快乐贪吃蛇游戏实战项目开发教程-01项目概述与目录

    一.项目简介 贪吃蛇是一个很经典的游戏,也很适合用来学习.本教程将和大家一起做一个Android版的贪吃蛇游戏. 我已经将做好的案例上传到了应用宝,无病毒.无广告,大家可以放心下载下来把玩一下.应用宝 ...

  7. Java虚拟机JVM学习01 流程概述

    Java虚拟机JVM学习01 流程概述 Java虚拟机与程序的生命周期 一个运行时的Java虚拟机(JVM)负责运行一个Java程序. 当启动一个Java程序时,一个虚拟机实例诞生:当程序关闭退出,这 ...

  8. 【Zigbee技术入门教程-01】Zigbee无线组网技术入门的学习路线

    [Zigbee技术入门教程-01]Zigbee无线组网技术入门的学习路线 广东职业技术学院  欧浩源 一.引言    在物联网技术应用的知识体系中,Zigbee无线组网技术是非常重要的一环,也是大家感 ...

  9. jms - activeMQ入门案例

    activeMQ入门案例 叨叨一波,很久没写博客了,最近比较慢,时间抽不出来,这个借口说的很尴尬...我知道作为一名合格的码农就必须养成每天一博客的习惯.希望友友们别像我这样懒,闲话不多时进入今天的主 ...

随机推荐

  1. Mat类

    1.Mat类 早期的opencv中,使用IplImage和CvMat数据结构来表示图像.IplImage和 CvMat 都是c语言的结构.使用这两个结构的问题是内存需要手动管理,开发者必须清楚的知道何 ...

  2. Linux之tcpdump使用详解

    1.1  三种关键字 关于类型的关键字 第一种是关于类型的关键字,主要包括host,net,port, 例如 host 210.27.48.2,指明 210.27.48.2是一台主机,net 202. ...

  3. Hibernate 处理查询 in 字句

    from : http://blog.csdn.net/wodestudy/article/details/38200421 在处理hibernate的实体查询,一般可以采用多种方式处理复杂的查询,比 ...

  4. PHP 查看扩展信息的命令

    PHP 查看扩展信息的命令 这里以查看 Swoole 扩展信息为例. root@639ca1f15214:~# php --ri swoole // php --ri [扩展名称] swoole sw ...

  5. What I have lived for

    What I have lived for- Bertrand Russell   Three passions, simple but overwhelmingly strong, have gov ...

  6. java代理模式实例讲解

    下面这个是设计模式课上的例子: import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import ...

  7. C#用GDI+解析Json文件绘制Chart

    using System.Collections.Generic; namespace Chart { public class Program { static void Main(string[] ...

  8. 关于nohup命令

    nohup java -jar Test.jar --server.port=443 > console.log 2>&1 & 关于nohup命令 when using t ...

  9. 数据结构31:树(Tree)详解

    复制广义表数据结构中的树 树是数据结构中比较重要也是比较难理解的一类存储结构.本章主要主要围绕二叉树,对树的存储以及遍历做详细的介绍,同时还会涉及到有关树的实际应用,例如构建哈弗曼编码等. 由于树存储 ...

  10. CF1101A Minimum Integer 模拟

    题意翻译 题意简述 给出qqq组询问,每组询问给出l,r,dl,r,dl,r,d,求一个最小的正整数xxx满足d∣x d | x\ d∣x 且x̸∈[l,r] x \not\in [l,r]x̸∈[l ...