MQ系列(八):RabbitMQ过期时间,死信队列,延迟队列,优先队列,持久化

RabbitMQ 提供了在声明队列时或发送消息时给消息设置过期时间。死信队列为处理过期或不能正确路由的消息提供了驻留场所,可以防止消息丢失,便于分析无法消费的原因。

消息过期时间配合死信队列可以实现延迟队列的功能。优先队列中优先级高的消息被优先消费。RabbitMQ 持久化支持交换器持久化,队列持久化,消息持久化。持久化可以提高 RabbitMQ 的可靠性,防止服务器重启或宕机导致数据丢失。

阅读更多

MQ系列(七):RabbitMQ连接,交换器,队列,发送,消费,确认,拒绝的使用

现在的 Java 应用大多会基于 Spring 框架开发,Spring 为集成 RabbitMQ 提供了封装好的依赖库 spring-rabbit,一些重复性的工作只需要通过 XML 一次性配置。Spring Boot 也为 RabbitMQ 提供了 start 依赖库,少许配置就可直接使用。

封装带来了使用的便捷性,但仍有必要了解其内部的一些运行流程和机制,方便在实际开发过程中灵活运用,也易于快速定位和解决问题。

本篇对 RabbitMQ 原生 Java 客户端 amqp-client 的运行流程进行讲解,大致涉及连接,交换器,队列,发送消息,消费消息,消息消费确认,拒绝消息等。

阅读更多

MQ系列(六):RabbitMQ特点,概念,服务安装,应用集成

RabbitMQ 是部署最广泛的开源消息代理,有成千上万的用户,是最受欢迎的开源消息中间件之一。

RabbitMQ(兔子) 轻巧,易于在内部和云上部署。可以分布式集群部署,以满足大规模,高可用性的要求。

RabbitMQ 是由 Erlang 语言开发的基于 AMQP (Advanced Message Queuing Protocol:高级消息队列协议)标准的开源实现。目前最新版本是 RabbitMQ 3.8.14(2021-03-02) 。 版本实现的 AMQP 0-9-1 版本协议。还可以通过插件的方式支持 STOMP 和 MQTT 等协议。

阅读更多

MQ系列(五):RabbitMQ 之 AMQP 0-9-1 模型和概念说明

要使用 RabbitMQ,需先理解其基本概念,而 RabbitMQ 原生是实现 AMQP 0-9-1 版本协议的,RabbitMQ 基本概念来自于 AMQP 0-9-1 协议中的定义,所以就有必要了解协义中的相关概念。

AMQP 0-9-1(Advanced Message Queuing Protocol:高级消息队列协议)是一种消息传递协议,它两个应用可以通过中间件代理通信。RabbitMQ 实现该版本的协议,下面描述的概念和述语也是基本此版本协议。

阅读更多

Java Executor框架详解与应用

Java 的线程即是工作单元,也是执行机制。从 JDK 5 开始,把工作单元与执行机制分离开来。工作单元包括 RunnableCallable,而执行机制由 Executor 框架提供。

Executor 提供了一种将任务提交与每个任务如何运行的机制分离的方法(包括线程使用,调度的详细信息)。

阅读更多

线程池 ThreadPoolExecutor 详解与应用

Java 应用中对宝贵的稀缺资源池化是保障系统稳定运行,优化系统响应速度的重要手段。

线程池的运用场景非常广,几乎所有需要异步或并发执行任务的程序都可以使用线程池。

阅读更多

高并发之接口限流与实现

开发互联网系统及架构在满足测算出的并发请求时,还要预防并发可能突破设计峰值的情况,必要时可以优先处理高优先级数据或特殊特征的数据,也要确保系统可用不崩溃。

开发高并发系统时有三把利器用来保护系统:缓存降级限流。本文介结限流相关概念和实现方式。

阅读更多

JVM虚拟机(1):JVM 监控调优-自带命令

JDK 中自带了一些非常实用的 JVM 性能分析和故障监控的小工具。

也有一些第三方分析工具,如 Arthas。基于开发工具的 JVM 分析工具,如 IDEA 的 VisualVM 插件,Eclipse 的 MAT(Memory Analyzer Tool)。

了解 JVM 内存和性能分析工具及使用,对快速判断和定位线上问题是非常有帮助的。

阅读更多

Dubbo系列(一):RPC调用与Dubbo架构及特点说明

分布式集群部署的应用之间相互调用,需要用到 PRC(远程过程调用)技术。

RPC 是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协义和框架。RPC 可以让开发人员像调用本地方法一样调用远程服务。

目前开源且相对成熟和稳定的主流 RPC 框架有:HSF,Dubbo,Thrity,gRPC,Finagle。

阅读更多

Java基础:JDK8 HashMap源码及数据结构分析

HashMap 是 Java 中非常重要的集合类型,其具有快速存储,快速查找(时间复杂度非常低,非效非常高),自动扩容等特点,在实际开发中经常用到。

关于 HashMap 特性,底层原理也是面试中被问到概率极高的问题,因为 HashMap 涉及到好几个基本数据结构及相关算法知识,如组数,链表,二叉树及变种,Hash算法等。所以有必要对其深入理解。

阅读更多