activemq

activeMQ的使用

江枫思渺然 提交于 2020-02-05 03:10:38
一.应用场景 在异步处理,并发的业务(比如抢购活动),应用解耦都可以使用到activeMQ 二.RPC框架的局限性 我们使用RPC的框架其实都是点对点的调用,这种架构面对规模和复杂度都越来越高的分布式系统,这些技术也显示出其局限性 1)同步通讯,客户端发出调用后,必须等待服务对象完成处理并返回结果之后才能继续进行; 2)客户和服务对象的生命周期紧密耦合,客户进程和服务对象进程都必须正常运行;如果由于服务对象崩溃或者网络导致用户的请求不可达,客户会受到异常 3)点对点的通讯,客户的一次调用只能发给某个单独的目标对象. 三.消息中心的特点: 1、消息异步接收:消息发送者不需要等待消息接收着的响应,提高整个应用程序的性能 2、消息可靠接收:消息发送出去后保存在一个中间容器内,只有消息接收者收到消息后才删除消息 3、消息队列接收:消息以队列的形式接收,一个一个排队处理 可以指定先后顺序 四.JMS的概念 JMS即Java消息服务(Java Message Service)应用程序接口,是JavaEE平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。 JMS规范 JMS定义了Java中访问消息中心的接口,并没有给予实现,实现JSM接口的消息中心称为JMS Provider,例如ActiveMQ 五.相关的组成 JMS Provide r

20200202 ActiveMQ 1. 入门概述

拈花ヽ惹草 提交于 2020-02-02 09:54:48
MQ的种类 : Kafka RabbitMQ RocketMQ ActiveMQ 微服务中系统直接调用存在的问题,需要引入MQ的原因: 系统之间接口耦合严重; 大流量并发时,容易被冲垮; 等待同步调用存在性能问题; MQ能做什么 解耦 削峰 异步 MQ的 技术维度 : 发送和接收消息API MQ的高可用性 MQ的集群和容错配置 MQ的持久化 延时发送和定时投递 签收机制 Spring整合 编程语言:Java Kafka:Java、Scala RabbitMQ:erlang RocketMQ:Java 面向消息的中间件(messae-oriented middleware) MOM 定义: 是指利用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供 消息传递 和 消息排队 模型在分布式环境下提供应用解耦、弹性伸缩、冗余存储、流量削峰、异步通信、数据同步等功能。 大致过程: 发送者把消息发送给消息服务器,消息服务器将消息存放在若干 队列 / 主题 中,在合适的时候,消息服务器会将消息转发给接受者。在这个过程中, 发送和接收是异步的 ,也就是发送无需等待,而且发送者和接受者的生命周期也没有必然关系;尤其在发布pub/订阅sub模式下,也可以完成一对多的通信,既让一个消息有多个接收者。 来源: https://www.cnblogs.com

20200202 ActiveMQ 3. Java编码实现ActiveMQ通讯

浪子不回头ぞ 提交于 2020-02-02 09:53:50
ActiveMQ 3. Java编码实现ActiveMQ通讯 3.1. 队列(Queue) 目的地(Destination)分为: 点对点的队列(Queue) 一对多的主题(Topic) 3.1.1. 上手代码 pom.xml <dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-all</artifactId> <version>5.15.9</version> </dependency> <dependency> <groupId>org.apache.xbean</groupId> <artifactId>xbean-spring</artifactId> <version>3.16</version> </dependency> 生产者代码 public class JmsProducer { public static final String ACTIVEMQ_URL = "tcp://192.168.181.128:61616/"; public static final String QUEUE_NAME = "queue01"; public static void main(String[] args) throws JMSException { // 1. 创建连接工厂

20200202 ActiveMQ 4. JMS规范和落地产品

孤者浪人 提交于 2020-02-02 09:53:40
ActiveMQ 4. JMS规范和落地产品 4.1. JMS是什么 4.1.1. JavaEE JavaEE是一套使用Java进行企业级应用开发的大家一致遵循的13个核心规范工业标准。JavaEE平台提供了一个基于组件的方法来加快设计、开发、装配及部署企业应用程序。 JDBC(Java Database)数据库连接 JNDI(Java Naming and Directory Interfaces)Java的命名和目录接口 EJB(Enterprise JavaBean) RMI(Remote Method Invoke)远程方法调用 Java IDL(Interface Description Language)/ CORBA(Common Object Broker Architecture)接口定义语言/公用对象请求代理程序体系结构 JSP(Java Server Pages) Servlet XML(Extensible Markup Language)可扩展标记语言 JMS(Java Message Service)Java消息服务 JTA(Java Transaction API)Java事务API JTS(Java Transaction Service)Java事务服务 JavaMail JAF(JavaBean Activation Framework) 4.1

20200202 ActiveMQ 5. ActiveMQ的Broker

安稳与你 提交于 2020-02-02 09:53:23
ActiveMQ 5. ActiveMQ的Broker 5.1. 是什么 相当于一个ActiveMQ服务器实例。 Broker 就是实现了用代码形式启动 ActiveMQ 将 MQ 内嵌到 Java 代码中,可以随时启动,节省资源,提高了可靠性。 5.2. 使用指定配置文件启动ActiveMQ # 复制配置文件 cp activemq.xml activemq02.xml # 使用指定配置文件启动ActiveMQ ./bin/activemq start xbean:file:/myactivemq/apache-activemq-5.15.11/conf/activemq02.xml # 验证启动成功 lsof -i:61616 5.3. 嵌入式Broker 把ActiveMQ Broker作为独立的消息服务器来构建Java应用。 ActiveMQ也支持在VM中基于嵌入式的Broker通信,能够无缝集成其他Java应用。 简单使用 pom.xml <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.9.5</version> </dependency> 嵌入式Broker代码实现 public class

20200202 ActiveMQ 6. Spring整合ActiveMQ

柔情痞子 提交于 2020-02-02 09:52:38
ActiveMQ 6. Spring整合ActiveMQ 6.1. Spring对ActiveMQ队列、主题的整合 pom.xml <dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-all</artifactId> <version>5.15.9</version> </dependency> <dependency> <groupId>org.apache.xbean</groupId> <artifactId>xbean-spring</artifactId> <version>3.16</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.9.5</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.10</version> </dependency> <!--

20200202 ActiveMQ 10. ActiveMQ多节点集群

China☆狼群 提交于 2020-02-02 09:42:51
ActiveMQ 10. ActiveMQ多节点集群 10.1. 简介 面试题: 引入消息中间件后如何保证其高可用 实现方式 :基于 ZooKeeper 和 LevelDB 搭建 ActiveMQ 集群。集群仅提供主备方式的高可用集群功能,避免单点故障。 集群方案 : 基于shareFileSystem共享文件系统(KahaDB) 基于JDBC 基于可复制的LevelDB LevelDB,5.6版本之后推出了LecelDB的持久化引擎,它使用了自定义的索引代替常用的BTree索引,其持久化性能高于KahaDB,虽然默认的持久化方式还是KahaDB,但是LevelDB可能会是趋势。 在5.9版本还提供了基于LevelDB和Zookeeper的数据复制方式,作为Master-Slave方式的首选数据复制方案。 10.2. zookeeper+replicated-leveldb-store的主从集群 10.2.1. 简介 从ActiveMQ5.9开始,ActiveMQ的集群实现方式取消了传统的Masster-Slave方式.,增加了基于Zookeeper+LevelDB的Master-Slave实现方式,从5.9版本后也是官网的推荐。 基于Zookeeper和LevelDB搭建ActiveMQ集群,集群仅提供主备方式的高可用集群功能,避免单点故障. 官网信息 10.2.2. 原理说明

SpringBoot整合ActiveMq

|▌冷眼眸甩不掉的悲伤 提交于 2020-02-01 02:31:32
消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题。实现高性能,高可用,可伸缩和最终一致性架构。是大型分布式系统不可缺少的中间件。消息形式支持点对点和订阅-发布。 ActiveMQ是什么 ActiveMQ是消息队列技术,为解决高并发问题而生 ActiveMQ生产者消费者模型(生产者和消费者可以跨平台、跨系统) ActiveMQ支持如下两种消息传输方式 点对点模式,生产者生产了一个消息,只能由一个消费者进行消费 发布/订阅模式,生产者生产了一个消息,可以由多个消费者进行消费 添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-activemq</artifactId> </dependency> <!--消息队列连接池--> <dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-pool</artifactId> <version>5.15.0</version> </dependency> 配置文件 spring: activemq: #ActiveMQ通讯地址 broker-url: tcp://127.0.0.1

ActiveMQ - 安装

删除回忆录丶 提交于 2020-01-31 00:34:02
①将apache-activemq-5.12.0-bin.tar.gz 上传至服务器local文件夹下 ②解压此文件 cd /usr/local tar zxvf apache-activemq-5.12.0-bin.tar.gz ③删除压缩包 rm -rf apache-activemq-5.12.0-bin.tar.gz ④为apache-activemq-5.12.0目录赋权 chmod 777 apache-activemq-5.12.0 ⑤进入apache-activemq-5.12.0\bin目录赋与执行权限 cd apache-activemq-5.12.0/bin/ chmod 755 activemq ⑥启动 cd /usr/local/apache-activemq-5.12.0/bin/ ./activemq start ⑦浏览器访问8161端口 ⑧进入管理页面 用户名和密码都是 admin ⑨说明 Number Of Pending Messages :等待消费的消息 ,这个是当前未出队列的数量。 Number Of Consumers :消费者这个是消费者端的消费者数量。 Messages Enqueued :进入队列的消息 ,进入队列的总数量,包括出队列的。 Messages Dequeued :出了队列的消息 ,可以理解为是消费这消费掉的数量。

ActiveMQ--模式(队列模式/主题模式)

ぐ巨炮叔叔 提交于 2020-01-30 20:32:42
两种模式:队列模式/主题模式 pom.xml <dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-all</artifactId> <version>5.15.9</version> </dependency> 队列模式,其实就是分食模式。    比如生产方发了 10条消息到 activeMQ 服务器, 而此时有多个 消费方,那么这些消费方就会瓜分这些10条消息,一条消息只会被一个消费方得到。 主题模式,就是订阅模式。   比如生产方发了10条消息,而此时有多个消费方,那么多个消费方都能得到这 10条消息,就如同订阅公众号那样。 队列模式: 1. 首先运行两次 TestConsumer 类,以启动两个不同的消费者 2. 运行一次 TestProducer, 以启动 生产者   生产者生产100个,两个消费者瓜分   消费者: public class TestConsumer { //服务地址,端口默认61616 private static final String url="tcp://127.0.0.1:61616"; //这次消费的消息名称 private static final String topicName="queue_style"; //消费者有可能是多个