自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(281)
  • 收藏
  • 关注

原创 RocketMQ(20)——整合Spring Boot

Apache RocketMQ提供了对Spring Boot的支持,目前最新的整合版本使用的是RocketMQ4.5.1版本,使用Spring Boot是2.0.5版本。整合Spring Boot需要引入rocketmq-spring-boot-starter依赖,目前最新版本是2.0.3。

2022-09-19 22:58:35 524 1

原创 RocketMQ(19)——mqadmin简介

在RocketMQ安装目录的bin目录下有一个mqadmin指令,该指令可以用来对RocketMQ进行一些管理。

2022-09-19 22:50:20 517

原创 RocketMQ(18)——高可用配置

RocketMQ的核心概念中有Name Server和Broker,它们充当服务端,作为客户端生产者和消费者都需要和它们不断的进行交互。如果你的Name Server和Broker只有一台机器,并且挂了,那么与它们交互的这条路就断了。而如果作为客户端的生产者和消费者只有一台,而且挂了,那这个是属于业务问题,且对应的消息已经在Broker持久化了,下次消费者启动后可以继续消费,而且这块通常也会部署为多节点。所以对于RocketMQ的高可用,主要还是Name Server和Broker的高可用。

2022-09-16 23:40:29 384

原创 RocketMQ(17)——Broker可配置参数

之前使用Broker都是通过`mqbroker -n localhost:9876`启动Broker,同时指定对应的Name Server地址是`localhost:9876`。其实它还可以指定一些其它的信息。

2022-09-13 18:30:00 1907

原创 RocketMQ(16)——Name Server可配置参数介绍

Name Server是通过RocketMQ的bin目录下的mqnamesrv指令启动的,之前介绍的都是不带任何参数直接启动的,实际上该指令还可以带一些参数。

2022-09-12 22:36:22 1266

原创 RocketMQ(15)——RocketMQ控制台

RocketMQ Console的顶部一共有8个菜单,OPS可以对控制台进行一些配置,主要是指定需要连接的NameServer的地址。可以通过某个Broker右边的Operation列中的STATUS按钮查看Broker的一些运行时信息,通过CONFIG按钮可以查看该Broker的配置信息。Message菜单可以从Topic、消息Key、消息ID三个维度来查询消息,查询完消息后可以查看消息的详细信息,也可以控制消息重新发送。该界面可以查看到所有的Topic信息,包括系统的一些Topic。

2022-09-06 23:18:33 3263

原创 RocketMQ(14)——发送带Key的消息

如果业务里面的某一条消息有问题,通过Topic查询出来的是一堆的消息,虽然说可以通过时间范围查找,但是在某个时间范围内的消息有可能也成千上万,很难找到业务对应的那条。而通过Key进行查找的时候,Key就是我们的业务ID,很容易获得,Key往往是唯一的,那么查询出来的消息也将是唯一的那条。比如下面代码一共发送了10条消息,第一条消息的Key是0、1、2,第二条消息的Key是1、2、3,最后一条消息的Key是9、10、11。发送消息的时候可以指定一个Key,这个Key通常就是消息对应的某种业务的主键。

2022-09-06 22:53:37 1630

原创 RocketMQ(13)——指定NameServer的四种方式

无论是生产者还是消费者,对于NameServer来讲它们都是客户端,它们都需要与NameServer进行连接,可以有四种方式指定需要连接的NameServer的地址。

2022-09-06 22:50:59 561

原创 RocketMQ(12)——生产者介绍

RocketMQ的消费者有基于拉模式的DefaultMQPullConsumer和基于推模式的DefaultMQPushConsumer。而对于生产者而言基本上只有一个DefaultMQProducer,和一个支持事务的TransactionMQProducer。TransactionMQProducer继承自DefaultMQProducer,所以DefaultMQProducer有的功能TransactionMQProducer都有。

2022-09-05 22:08:40 571

原创 RocketMQ(11)——消费者拉模式和推模式

RocketMQ提供了两种消息的消费模式,拉模式和推模式。我们先来看一下拉模式消费的应用。

2022-09-05 20:09:50 2784

原创 RocketMQ(10)——发送延时消息

指定一个消息的延时等级即可。RocketMQ内部定义了18个等级,分别是1s、5s、10s、30s、1m、2m、3m、4m、5m、6m、7m、8m、9m、10m、20m、30m、1h、2h,分别对应于1-18,所以如果一条消息需要延时1分钟,需要指定delayLevel为5,延时10分钟,则指定delayLevel为14。下面代码可以用来验证一下这10条消息是不是真的延时消费了,通过实际输出的结果会看到从消费到产生的时间间隔与上面delayLevel上描述的基本一致,差的一点毫秒数在于消息传递上的耗时。

2022-09-04 23:33:07 1228

原创 RocketMQ(09)——发送事务消息

发送事务消息RocketMQ支持发送事务消息,它的事务消息是基于二阶段提交机制实现的。当发送的消息是事务消息时,只有对应的消息被提交了才能被消费者进行消费。发送事务消息时生产者需要使用TransactionMQProducer,它还需要指定一个TransactionListener。TransactionListener接口的定义如下。public interface TransactionL...

2020-03-10 17:48:38 2122

原创 RocketMQ(08)——日志输出到RocketMQ

日志输出到RocketMQRocketMQ对常用的几种日志输出框架都定义了一个日志输出实现,使对应的日志信息作为一条消息发送到RocketMQ。要使日志输出信息能够发送到RocketMQ,需要添加rocketmq-logappender依赖。<dependency> <groupId>org.apache.rocketmq</groupId> ...

2020-03-10 17:46:58 4743

原创 RocketMQ(07)——消费者通过用户属性进行过滤

消费者通过用户属性进行过滤生产者在发送消息的时候可以通过Message的putUserProperty()放Message中放一些用户自定义属性,比如下面这样。@Testpublic void testFilterSend() throws Exception { DefaultMQProducer producer = new DefaultMQProducer("group1");...

2020-03-10 17:44:32 3270 2

原创 RocketMQ(06)——消息的批量发送和消费

消息的批量发送和消费发送生产者进行消息发送时可以一次发送多条消息,这对于体积比较小的消息而言会大大改善性能,可以想象原本发送10条消息需要传递10次,现在只需要传递一次。这可以通过调用send()时传递一个消息集合。比如下面这样。批量发送的消息必须拥有相同的Topic,且一次发送的消息的body的总体积不能超过4MB,否则会得到异常——org.apache.rocketmq.client.ex...

2020-03-08 00:15:52 6531

原创 RocketMQ(05)——消息的群集消费和广播消费

消息的群集消费和广播消费RocketMQ的消费者进行消息消费时有两种消费方式,群集消费和广播消费。默认是群集消费。群集消费Consumer都有一个Group,当两个Consumer实例属于同一个Group时,它们会共享消息队列中的消息消费位移,即同一条消息只会由一个消费者实例消费。实际上一个队列只会分配给一个消费者实例,那么属于该队列中的消息就只能被一个消费者实例消费了。当一个消费者实例挂了...

2020-02-02 00:17:24 2102

原创 RocketMQ(04)——发送顺序消息

发送顺序消息如果你的业务上对消息的发送和消费顺序有较高的需求,那么在发送消息的时候你需要把它们放到同一个消息队列中,因为只有同一个队列的消息才能确保消费的顺序性。下面代码我们在发送消息的时候,调用的是需要传递MessageQueueSelector的send(),该方法还可以传递一个额外的参数,其对应MessageQueueSelector的select()的最后一个参数。下面代码中我们一共发送...

2020-01-19 23:24:54 2165

原创 RocketMQ(03)——通过Tag对消息分类

通过Tag对消息分类RocketMQ建议一个业务系统只使用一个Topic,不同类型的消息通过tag来区分。tag可以在构造Message的时候指定,下面代码就指定了发送的消息的tag都为tag0。@Testpublic void sendWithTag() throws Exception { DefaultMQProducer producer = new DefaultMQProdu...

2019-12-28 19:38:30 10013

原创 RocketMQ(02)——发送消息的三种方式

发送消息的三种方式同步发送Producer在进行消息发送时可以是阻塞的,也可以是非阻塞的。具体对应到发送方式一共有三种,分别是同步、异步和单向的(ONEWAY)。之前介绍的调用send()返回SendResult的方法是阻塞的,它一定要等到Broker进行了响应后才会返回,才能继续往下执行。对于下面的代码就是只有第一条消息发送完了后,才能发送第二条消息,接着是第三条。这种阻塞发送的方式也叫同步...

2019-12-27 23:36:20 2918

原创 RocketMQ(01)——简介

RocketMQ简介笔者使用的是Apache RocketMQ,官网是http://rocketmq.apache.org/。RocketMQ是Alibaba开源的一个分布式消息队列,可以通过http://rocketmq.apache.org/dowloading/releases/下载当前最新的版本。下载后解压缩,然后通过bin/mqnamesrv启动一个Name Server,它默认监听在...

2019-12-07 23:49:03 1628

原创 Spring Cloud(18)——gateway

Spring Cloud GatewaySpring Cloud Gateway是Spring提供的API网关层,可以通过它代理请求,然后转发到真正的目标地址上。使用Spring Cloud Gateway需要加上spring-cloud-starter-gateway和spring-boot-starter-webflux依赖。<dependency> <groupId...

2019-11-12 23:13:22 1650

原创 Spring Cloud(17)——使用Zookeeper进行服务注册与发现

使用Zookeeper进行服务注册与发现服务注册(ServiceRegistry)与发现(DiscoveryClient)在Spring Cloud中都进行了抽象。除了之前介绍的Eureka外,Spring Cloud也支持使用Zookeeper作为服务的注册中心。基于Zookeeper的服务注册由org.springframework.cloud.zookeeper.serviceregist...

2019-10-23 23:14:41 2755

原创 Spring Cloud(16)——链路追踪工具Sleuth

追踪工具SleuthSpring Cloud Sleuth可以用来追踪微服务请求中的整个请求,通过它可以记录各个请求之间的耗时、异常等情况。使用Spring Cloud Sleuth时一般会跟Zipkin一起使用。Spring Cloud Sleuth收集到的一些跟踪信息可以发送给Zipkin,Zipkin提供了图形化界面方便查看服务之间的调用关系和调用耗时等情况。我们先来看几个Spring C...

2019-10-16 23:40:14 1880

原创 Spring Cloud(15)——配置中心

Spring Cloud ConfigSpring Cloud Config提供分布式配置功能,它包含Server和Client两部分。Server负责提供统一的配置信息,Client负责从Server获取相应的配置信息。Server端的配置信息支持git存储、本地文件存储、数据库等多种存储方式,默认使用git存储。Server简介Spring Cloud Config Server需要添加...

2019-10-09 23:27:25 1515

原创 Spring Cloud(14)——Function

Spring Cloud FunctionSpring Cloud Function专注于提供一些与业务无关的函数功能。它允许用户把java.util.function.Function、java.util.function.Consumer和java.util.function.Supplier类型的bean直接对外发布。通过Http对外发布Function、Consumer、Suppli...

2019-10-08 23:17:39 2253

原创 Spring Cloud(13)——服务注册与发现工具Consul

服务注册与发现工具-ConsulSpring Cloud也可以使用Consul作为服务注册与发现工具。Consul和Eureka一样,也有服务端和客户端的概念,它们都需要基于Consul Agent运行,即Agent有Server模式和Client模式,开发环境可以直接通过consul agent -dev启动一个Agent,它默认会监听8500端口。注册服务作为服务提供方如果需要通过Con...

2019-09-27 23:28:17 1351

原创 Spring Cloud(12)——基于Kafka的Stream实现

基于Apache Kafka的Stream实现如果你的应用使用了Apache Kafka,你需要把它和Spring Cloud进行整合。需要在应用中添加如下依赖。<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-st...

2019-09-23 23:19:25 4516

原创 Spring Cloud(11)——基于RocketMQ的Stream实现

基于RocketMQ的Stream实现Spring Cloud Stream是一个消息收发的框架,它提供了一套标准,应用程序只需要按照它的标准进行消息的收发,而不用关注具体的实现机制。具体的实现可以基于不同的消息中间件进行不同的实现,比如Kafka的实现、RabbitMQ的实现、RocketMQ的实现等。官方已经提供了Kafka和RabbitMQ的实现,RocketMQ的实现由Alibaba负责...

2019-09-20 22:37:22 16397 8

原创 Spring Cloud(10)——声明式的Rest客户端Feign

声明式的Rest客户端Feign是一个声明式的Rest客户端,它可以跟SpringMVC的相关注解一起使用,也可以使用Spring Web的HttpMessageConverter进行请求或响应内容的编解码。其底层使用的Ribbon和Eureka,从而拥有客户端负载均衡的功能。使用它需要在pom.xml中加入spring-cloud-starter-openfeign依赖。<depend...

2019-09-18 23:29:22 1782

原创 Spring Cloud(09)——服务端负载工具Zuul

服务端负载工具ZuulZuul是Netflix公司提供的服务端负载工具,Spring Cloud基于它做了一些整合。试想一下微服务场景下服务端有服务A、服务B、服务C等,每个服务对应不同的地址,作为服务提供者,你不想直接对外暴露服务A、服务B、服务C的地址,而且每种服务又有N台机器提供服务。使用Zuul后,可以同时聚合服务A、服务B、服务C,又可实现服务的负载均衡,即同时聚合多个服务A的提供者。...

2019-09-17 23:59:34 7743 5

原创 Spring Cloud(08)——客户端负载工具Ribbon

客户端负载工具RibbonRibbon是Netflix公司提供的一个客户端负载工具,Spring Cloud也对其进行了集成支持。使用Ribbon需要在pom.xml中添加如下依赖。<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>sprin...

2019-08-28 22:41:11 1244

原创 Spring Cloud(07)——Hystrix Dashboard

Hystrix DashboardSpring Cloud也基于Spring Boot的监控规范提供了Hystrix的指标监控信息。为了看到这些监控信息,首先需要在pom.xml中添加如下依赖。<dependency> <groupId>org.springframework.boot</groupId> <artifactId>...

2019-08-25 21:14:51 1166

原创 Spring Cloud(06)——断路器Hystrix

断路器HystrixHystrix是Netflix实现的断路器,其github地址是https://github.com/Netflix/Hystrix。当对一个服务的调用次数超过了circuitBreaker.requestVolumeThreshold(默认是20),且在指定的时间窗口metrics.rollingStats.timeInMilliseconds(默认是10秒)内,失败的比例...

2019-08-25 21:06:30 1269

原创 Spring Cloud(05)——Eureka Client介绍

Eureka Client介绍Eureka Client是对应于Eureka Server的客户端,用于与Eureka Server进行通信。对于应用来说,Eureka Client又可以分为应用的服务端和应用的客户端,它们之间的关系如下图所示。应用服务端向Eureka Server注册它自己,应用客户端从Eureka Server获取应用服务信息,从而能够直接对应用服务端发起调用。[外链图片...

2019-08-01 21:35:42 1686 1

原创 Spring Cloud(04)——Eureka Server介绍

Eureka ServerEureka Server是Netflix提供的基于Rest的服务注册和发现框架,Spring Cloud对其进行了集成。使用Eureka Server需要添加spring-cloud-starter-netflix-eureka-server依赖。<dependency> <groupId>org.springframework.cl...

2019-07-18 20:58:57 1192

原创 Spring Cloud(03)——内置加解密支持

加解密支持Spring Cloud内置了加解密的支持,包括对称加密和非对称加密。使用对称加密只需要在bootstrap.yml文件中通过encrypt.key属性指定加密用的密钥。encrypt: key: ABC这样Spring Cloud就会自动创建一个org.springframework.security.crypto.encrypt.TextEncryptor类型的bean。...

2019-06-23 18:25:22 2148 1

原创 Spring Cloud(02)——bootstrap文件介绍

bootstrap文件介绍bootstrap的中文翻译是“引导程序”的意思。Spring中的ApplicationContext是会有父子关系的。Spring Cloud初始化的ApplicationContext叫bootstrap ApplicationContext,之后会创建一些子的ApplicationContext。这个bootstrap ApplicationContext如果在初...

2019-06-23 18:20:07 2771

原创 Spring Cloud(01)——初体验

初体验Spring Cloud旨在为一些常见的场景提供一些开箱即用的功能,它是基于Spring Boot构建的。本文将作为Spring Cloud的应用入门篇讲解如何快速的利用Spring Cloud搭建起一套可运行的开发环境。EurekaEureka是Netflix提供的一套基于Rest的服务发现框架,它包含服务端和客户端。服务端用来提供服务注册服务,客户端可以通过服务端进行服务注册和从服...

2019-06-18 23:21:47 1374 4

原创 Spring Boot(26)——启用https协议

启用Https启用Https协议,需要在服务端有一个证书。开发环境可以在通过如下指令生成一个证书及其KeyStore。keytool -genkeypair -alias springboot -keyalg RSA -dname "CN=SERVER1,OU=Unit,O=Elim,L=City,S=Province,C=CN" -keypass 123456 -keystore serve...

2019-06-17 19:40:39 2183 2

原创 Spring Boot(25)——打war包

打war包使用Spring Boot时通常打的是jar包,如果开发的是Web应用也通常使用内置的Web容器,比如Tomcat。那如果要打war包应该怎么办呢?1.首先需要把Maven的pom.xml中的package改为war。<packaging>war</packaging>2.拿掉spring-boot-maven-plugin插件,因为我们已经不需要rep...

2019-06-17 19:38:39 1051

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除