RabbitMQ消息发送、消费和确认
前提前一篇文章介绍到RabbitMQ相关组件的声明,组件声明完成之后,就可以发送消息和消费消息,消费消息的时候需要考虑消息的确认。 消息的发送消息的发送只依赖于交互器(名称)、可选路由键和可选的Header参数,可选路由键和Header可以认为是路由参数。因为RabbitMQ有四种内建的交换器,加上特殊的默认交换器可以认为有五种,这里列举一下通过这五种交换器发送消息需要的参数: 交换器类型 路由参数 默认交换器(AMQP default) 交换器名称(空字符串)和队列名称 Direct交换器 交换器名称和路由键 Fanout交换器 交换器名称(API中必须提供路由键,可以 ...
阅读更多
RabbitMQ队列、交换器和绑定的操作
前提如果能提前先阅读一下之前写过的一篇文章理解RabbitMQ中的AMQP-0-9-1模型,那么这篇文章应该会比较容易理解。 引入依赖先确认已经安装了RabbitMQ的服务,并且开启了Web管理插件,方便直接从Web管理界面查找到队列、交换器和绑定。个人有软件洁癖,喜欢把软件和依赖保持升级到最新版本。引入RabbitMQ的Java驱动: <dependency> <groupId>com.rabbitmq</groupId> <artifactId>amqp-client</artifactId> <versi ...
阅读更多
理解RabbitMQ中的AMQP-0-9-1模型
前提之前有个打算在学习RabbitMQ之前,把AMQP详细阅读一次,挑出里面的重点内容。后来找了下RabbitMQ的官方文档,发现了有一篇文档专门介绍了RabbitMQ中实现的AMQP模型部分,于是直接基于此文档和个人理解写下这篇文章。 AMQP协议AMQP全称是Advanced Message Queuing Protocol,它是一个(分布式)消息传递协议,使用和符合此协议的客户端能够基于使用和符合此协议的消息传递中间件代理(Broker,也就是经纪人,个人感觉叫代理合口一些)进行通信。AMQP目前已经推出协议1.0,实现此协议的比较知名的产品有StormMQ、RabbitMQ、Apach ...
阅读更多
RabbitMQ服务端的安装和使用
前提工作接近3年,一直有使用RabbitMQ作为服务间解耦的中间件,但是一直没有做一系列学习和总结,这里决心做一个系列总结一下RabbitMQ的运维、使用以及生产中遇到的问题等,以便日后直接拿起来使用。整个系列使用的Linux系统为CentOS 7的最新版本CentOS-7-x86_64-Minimal-1804。而RabbitMQ Server使用当前最新的版本3.7.9.RELEASE。 RabbitMQ Server的安装RabbitMQ Server使用Erlang语言编写,Erlang语言的并发编程支持比较优异,所以我们要先安装Erlang(类似于我们需要运行Java程序,要先安装J ...
阅读更多
JVM应用度量框架Micrometer实战
JVM应用度量框架Micrometer实战前提最近线上的项目使用了spring-actuator做度量统计收集,使用Prometheus进行数据收集,Grafana进行数据展示,用于监控生成环境机器的性能指标和业务数据指标。一般,我们叫这样的操作为”埋点”。SpringBoot中的依赖spring-actuator中集成的度量统计API使用的框架是Micrometer,官网是Micrometer.io。在实践中发现了业务开发者滥用了Micrometer的度量类型Counter,导致无论什么情况下都只使用计数统计的功能。这篇文章就是基于Micrometer分析其他的度量类型API的作用和适用场景 ...
阅读更多
基于Prometheus搭建SpringCloud全方位立体监控体系
基于Prometheus搭建SpringCloud全方位立体监控体系前提最近公司在联合运维做一套全方位监控的系统,应用集群的技术栈是SpringCloud体系。虽然本人没有参与具体基础架构的研发,但是从应用引入的包和一些资料的查阅大致推算出具体的实现方案,这里做一次推演,详细记录一下整个搭建过程。 Prometheus是什么Prometheus(普罗米修斯),是一个开源的系统监控和告警的工具包,其采用Pull方式采集时间序列的度量数据,通过Http协议传输。它的工作方式是被监控的服务需要公开一个Prometheus端点,这端点是一个HTTP接口,该接口公开了度量的列表和当前的值,然后Prome ...
阅读更多
JDK中注解的底层实现
前提用Java快三年了,注解算是一个常用的类型,特别是在一些框架里面会大量使用注解做组件标识、配置或者策略。但是一直没有深入去探究JDK中的注解到底是什么,底层是怎么实现了?于是参考了一些资料,做了一次稍微详细的分析。 JDK的注解描述参考JavaSE-8里面的JLS-9.6对注解的描述如下: 注解的声明如下:{InterfaceModifier} @ interface Identifier AnnotationTypeBody接口修饰符 @ interface 注解标识符 注解类型的内容 其中: 注解类型声明中的标识符指定了注解类型的名称。 如果注解类型与它的任何封 ...
阅读更多
JDK中枚举的底层实现
前提上一篇文章复习介绍了JDK中注解的底层实现,跟注解一样比较常用,但是底层实现比较神秘的还有枚举类型。趁着国庆假期的最后两天,把JDK中枚举的底层实现也进行一次探究。 通过例子查找本质在探究JDK注解的底层实现的时候,因为预先参考了不少资料,所以整个过程有点”未卜先知”的意味,这里尝试用未知的角度去看注解的底层实现。先定义一个手机操作系统类型枚举PhoneOsEnum:package club.throwable.enumeration;public enum PhoneOsEnum { /** * 安卓 */ ANDROID(1, "android"), /** * ios ...
阅读更多
Hi, theme-melody!
inithexo init [folder] Initializes a website. newhexo new [layout] <title> # hexo new post ${article} Creates a new article. generate$ hexo generate # hexo g Generates static files. Option Description -d, –deploy Deploy after generation finishes -w, –watch Watch file chan ...
阅读更多