rocketmq

RocketMQ 入门

喜你入骨 提交于 2020-02-05 14:13:45
一、rocketMQ是什么 rocketmq是一款低延迟、高可靠、可伸缩、已使用的消息中间件。具有以下特性: 1、支持发布/订阅、点对点(p2p)消息模型 2、同一个队列中支持先进先出(FIFO)和严格的顺序传递 3、支持拉(pull)和推(push)两种消息模式 4、单一队列百万消息的堆积能力 5、支持多种消息协议,比如: JMS 、MQTT 6、分布式高可用的不是架构,满足至少一次消息传递语义 7、提供docker 镜像用于隔离测试和云集群部署 8、提供配置、指标和监控功能丰富的Dashboard 二、专业术语 1、producer   生产者、作用是将消息发送到MQ 2、producer group   生产者组,多个发送同一类消息的生成者简称为一个生产者组 3、consumer   消费者、消费MQ上的消息 4、consumer group   消费者组,消费同一类型消息的多个consumer简称一个消费者组 5、topic   是一种消息的逻辑分类,比如:订单相关的消息存储在一个topic中、库存相关的消息存储在同一个topic中 6、message   是消息的载体,一个message必须指定topic,相当于寄信地址。message还可以设置一个tag 比便于消费者可以基于tag进行过滤消息 7、tag   标签,可以被认为是对topic的进一步细化

[MQ]rocketMQ

喜夏-厌秋 提交于 2020-02-05 14:11:54
阿里巴巴的rocketmq github地址:https://github.com/alibaba/RocketMQ 启动过程 git clone https://github.com/alibaba/RocketMQ.git cd RocketMQ sh install.sh cd devenv 安装完成后,因为install.sh脚本中创建devenv 符号链接写错了目录,需要在RocketMQ目录下执行如下命令: rm -rf devenv ln -s target/alibaba-rocketmq-3.0.7/alibaba-rocketmq devenv 启动RocketMQ cd devenv/bin nohup sh mqnamesrv & nohup sh mqbroker -n "192.168.230.128:9876" & more nohup.out 如果显示: The Name Server boot success. The broker[vdata.kt, 192.168.230.128:10911] boot success. 来源: https://www.cnblogs.com/hm-zhang/p/5955260.html

RocketMQ 概述

烈酒焚心 提交于 2020-02-05 14:06:02
Rocket 火箭 MQ的作用:同步转异步(异步解耦)。 难点:如何确保消息一定被消费,而且仅消费一次。 1、消息架构:生产者、服务器、消费者、路由发现。 2、消息顺序:严格按照消息到达服务器的顺序进行消费。 3、消息过滤:   a、服务端过滤   b、消费端过滤。   缺点:无用的消息也传输到消费端。优点:可控性高。服务端过滤与消费端过滤优缺点正好相反。 4、消息存储:通过内存映射机制,保证高性能存储。 5、消息高可用:同步刷盘,异步刷盘。 6、消息回溯:向前或者向后获取消息。 7、定时消息:消息的定时消费。 8、消息重试 架构:   1、Broker MQ服务器。   2、NameServer 注册中心,集群高可用相关。 架构图: 来源: https://www.cnblogs.com/chen--biao/p/10163834.html

Spring整合Rocketmq

Deadly 提交于 2020-02-05 12:02:25
🔥 不同于 RabbitMQ、ActiveMQ、Kafka 等消息中间件,Spring 社区已经通过多种方式提供了对这些中间件产品集成,例如通过 spring-jms 整合 ActiveMQ、通过 Spring AMQP 项目下的 spring-rabbit 整合 RabbitMQ、通过 spring-kafka 整合 kafka ,通过他们可以在 Spring 项目中更方便使用其 API 。目前在 Spring 框架中集成 RocketMQ 有三种方式, 一 是将消息生产者和消费者定义成 bean 对象交由 Spring 容器管理, 二 是使用 RocketMQ 社区的外部项目 rocketmq-jms( https://github.com/apache/rocketmq-externals/tree/master/rocketmq-connect-jms)然后通过 spring-jms 方式集成使用, https://github.com/apache/rocketmq-spring是如果你的应用是基于 spring-boot 的,可以使用 RocketMQ 的外部项目 rocketmq-spring-boot-starter( https://github.com/apache/rocketmq-spring)比较方便的收发消息 。 总的来讲 rocketmq-jms

主题和队列的区别

混江龙づ霸主 提交于 2020-02-05 01:30:04
队列模式 发布-订阅模式 :发布者、主题、订阅者 RabbitMQ 基于队列模式,可以使用Exchange实现发布-订阅模式 rabbitmq官方的六种工作模式 六种工作模式的主要特点: 简单模式: 一个生产者,一个消费者。生产者将消息发送到队列,消费者从队列中获取消息。 work模式: 一个生产者,多个消费者,每个消费者获取到的消息唯一。 订阅模式: 一个生产者发送的消息会被多个消费者获取。一个消费者队列可以有多个消费者实例,只有其中一个消费者实例会消费 路由模式: 发送消息到交换机并且要指定路由key ,消费者将队列绑定到交换机时需要指定路由key topic模式:将路由键和某模式进行匹配,此时队列需要绑定在一个模式上,“#”匹配一个词或多个词,“*”只匹配一个词。 消费者从队列中获取消息,服务端如何知道消息已经被消费呢? 模式1:自动确认 只要消息从队列中获取,无论消费者获取到消息后是否成功消息,都认为是消息已经成功消费。 模式2:手动确认 消费者从队列中获取消息后,服务器会将该消息标记为不可用状态,等待消费者的反馈,如果消费者一直没有反馈,那么该消息将一直处于不可用状态。 消息队列的消费机制 消息队列的消费机制:"请求-确认",保证了消息传递过程中的可靠性。 生产者先将消息发送给服务端(主题),服务端在收到消息并将消息写入主题或者队列中后,会给生产者发送确认的响应,否则重发

RocketMQ NameServer协调者

∥☆過路亽.° 提交于 2020-02-02 03:41:04
从3.x之前使用Zookeeper,之后改成NameServer NameServer是整个集群的状态服务器 NameServer部署,相互独立(相当于热备份) 为什么不用Zookeeper,因为根据业务需要不需要主从选举(相对来说比较重量级),NameServer只需要维护节点的状态和一些元数据信息 NameServer维护的主要信息: private final HashMap<String/* topic */, List<QueueData> > topicQueueTable; List<QueueData>的长度 指的是master Broker的个数 private final HashMap<String/* brokerName */, BrokerData > brokerAddrTable; BrokerData 存储的是节点地址的一些信息 private final HashMap<String/* clusterName */, Set<String/*brokerName */ > clusterAddrTable; 维护一个clusterName和一组brokerName的组成 private final HashMap<String/* brokerAddr */, BrokerLiveInfo > brokerLiveTable;

SpringBoot整合RocketMQ之环境搭建以及Producer发送消息

故事扮演 提交于 2020-01-31 23:56:08
https://github.com/apache/rocketmq-spring/releases/tag/2.0.0 https://github.com/apache/rocketmq-spring/archive/2.0.0.zip #源码地址(或者使用资料中的源码) https://github.com/apache/rocketmq-spring #进入源码目录,执行如下命令 mvn clean install <?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> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId>

RocketMQ错误消息重试策略之Producer的重试机制

穿精又带淫゛_ 提交于 2020-01-31 15:35:55
package cn.learn.rocketmq.error; import org.apache.rocketmq.client.producer.DefaultMQProducer; import org.apache.rocketmq.client.producer.SendResult; import org.apache.rocketmq.common.message.Message; import org.apache.rocketmq.remoting.common.RemotingHelper; public class SyncProducer { public static void main(String[] args) throws Exception { DefaultMQProducer producer = new DefaultMQProducer("LEARN_IM"); producer.setNamesrvAddr("localhost:9876"); //消息发送失败时,重试3次 producer.setRetryTimesWhenSendFailed(3); producer.start(); String msgStr = "用户A发送消息给用户B"; Message msg = new Message("learn_im_topic"

部署RocketMQ的管理工具

。_饼干妹妹 提交于 2020-01-31 02:10:40
部署RocketMQ的管理工具 RocketMQ提供了UI管理工具,名为rocketmq-console,项目地址:https://github.com/apache/rocketmq-externals/tree/master/rocketmq-console 该工具支持docker以及非docker安装,这里我们选择使用docker安装 #拉取镜像 docker pull styletang/rocketmq-console-ng:1.0.0 #创建并启动容器 docker run -e "JAVA_OPTS=-Drocketmq.namesrv.addr=172.16.55.185:9876 - Dcom.rocketmq.sendMessageWithVIPChannel=false" -p 8082:8080 -t styletang/rocketmqconsole- ng:1.0.0 通过浏览器进行访问:http://172.16.55.185:8082/#/ 切换语言到中文,所有的功能就一目了然了。 来源: CSDN 作者: Leon_Jinhai_Sun 链接: https://blog.csdn.net/Leon_Jinhai_Sun/article/details/104118208

RocketMQ-安装

雨燕双飞 提交于 2020-01-30 12:01:07
服务安装 下载 https://www.apache.org/dyn/closer.cgi?path=rocketmq/4.2.0/rocketmq-all-4.2.0-source-release.zip 安装 1.解压 2.进入主目录通过maven打包 mvn -Prelease-all -DskipTests clean install -U 设置环境变量 1.执行 /usr/libexec/java_home -V 查看jdk安装目录 1.进入主目录下的 进入主目录下的 rocketmq-all-4.3.0/distribution/ target /apache-rocketmq/bin 3.编辑 vim runbroker.sh runserver.sh 文件 删除2,3行 第一行改为你的jdk安装目录 [ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=$HOME/jdk/java [ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=/usr/java [ ! -e "$JAVA_HOME/bin/java" ] && error_exit "Please set the JAVA_HOME variable in your environment, We need java(x64)!"