】SpringBoot3.X 整合 MinIO 存储原生方案 分库分表 分库分表之实战-sharding-JDBC分库分表执行流程原理剖析 消息队列 深入浅出 RabbitMQ - 主题模式(Topic ) 前情摘要: 1、深入浅出 RabbitMQ-核心概念介绍与容器化部署 2、深入浅出 RabbitMQ-简单队列实战 3、深入浅出 RabbitMQ-工作队列实战(轮训策略VS公平策略) 4、 深入浅出 RabbitMQ-交换机详解与发布订阅模型实战 4、深入浅出 RabbitMQ-路由模式详解 5、深入浅出 RabbitMQ - 主题模式(Topic) 深入浅出 RabbitMQ - SpringBoot2 .X整合RabbitMQ实战 一、环境准备 安装RabbitMQ 首先确保已安装RabbitMQ服务并启动,可通过官方镜像或包管理工具安装。 总结 本文通过实战案例演示了SpringBoot2.X整合RabbitMQ的核心步骤,从配置连接、定义组件到实现消息的生产与消费。
本系列是「RabbitMQ实战:高效部署分布式消息队列」书籍的总结笔记。 地址: spring.rabbitmq.host=127.0.0.1 spring.rabbitmq.port=5672 spring.rabbitmq.username=guest spring.rabbitmq.password 可以看到,error收到了2次,说明exchange同时分发给了log.all和log.error队列,其他级别的日志分发给了log.all队列。 , [{dump_log_write_threshold , 1000}]], [rabbit , [{vm_memory_high_wateremark , 0.4}]] ] 上面配置了2个应用 /rabbitmq-plugins enable rabbitmq_management ? 查看日志 可以在文件系统中查看日志,启动rabbitmq后,会显示日志的路径: ?
.rpm 2.查看Erlang版 erl -version 二、安装RabbitMq 1.解压包 xz -d rabbitmq-server-generic-unix-3.7.7.tar.xz tar -xvf rabbitmq-server-generic-unix-3.7.7.tar 2.设置RabbitMq的环境变量 进入到rabbit文件内,其命令文件存在于sbin文件夹下,因此需要将sbin /rabbitmq-plugins enable rabbitmq_management #后台运行rabbitmq . 1、说明 使用是主题模式 + 主题交换机 + 消息确认机制 2、添加依赖 <dependency> <groupId>org.springframework.boot</groupId> 消息重复的原因有两个: 1.生产时消息重复, 2.消费时消息重复。 由于生产者发送消息给MQ,在MQ确认的时候出现了网络波动,生产者没有收到确认,实际上MQ已经接收到了消息。
MQ消息队列中间件,P2P,PUB/SUB 生产者消费者模型 erlang中实现AMQP 1 安装配置 2 rabbitmqctl status 3 增加用户?? rotate_logs .1 集群 rabbitmqctl cluster_status rabbitmqctl stop_app rabbitmqctl join_cluster rabbit@node2 rabbitmqctl start_app rabbitmqctl set_cluster_name cluster_name rabbitmqctl list_queues -p vhosts x1 x2 #没有.config RABBITMQ_MNESIA_BASE RABBITMQ_MNESIA_DIR RABBITMQ_LOG_BASE RABBITMQ_LOGS RABBITMQ_PLUGINS_DIR ----常用配置 CONFIG_FILE=/rabbitmq/rabbitmq CONFIG_ENV_FILE=/rabbitmq/rabbitmq-env.conf LOG_BASE=/rabbitmq
0.背景 本文记录安装 RabbitMQ 的过程。 1. 前置准备 在 安装 安装 RabbitMQ 之前,先要安装下面的依赖项。 (1) 安装erlang 参考我的另一篇文章:https://www.jianshu.com/p/3bae58df9a9c (2) 安装socat yum install socat (3) 安装 logrotate yum install logrotate 2. 安装 RabbitMQ 一般说安装 RabbitMQ 指的是安装 RabbitMQ 的 服务端软件 rabbitmq-server 。 客户端一般是通过 各个编程软件的框架(类库包)来连接使用。 RabbitMQ Management 插件 为 RabbitMQ 提供了一个管理UI和HTTP API。 这个插件包含在RabbitMQ发行版中,在使用之前必须启用它。
实战干货:编程严选网 本文讲解RabbitMQ如何与Spring系的框架体系进行整合(RabbitMQ整合Spring AMQP实战,RabbitMQ整合Spring Boot实战 ,RabbitMQ整合 Spring Cloud实战),涉及实际工作中需要注意的细节点,与最佳实战应用 1 你将学到 RabbitMQ 整合 Spring AMQP实战 RabbitMQ 整合 Spring Boot实战 RabbitMQ 整合 Spring Cloud实战 2 SpringAMQP用户管理组件 - RabbitAdmin RabbitAdmin 类可以很好的操作 rabbitMQ,在 Spring 中直接进行注入即可 设置交换机类型 2. 与SpringBoot2.x整合实战7.1 配置详解 publisher-confirms 实现一个监听器监听 broker 给我们返回的确认请求RabbitTemplate.ConfirmCallback
1 相关源码 2 SpringAMQP用户管理组件 - RabbitAdmin RabbitAdmin 类可以很好的操作 rabbitMQ,在 Spring 中直接进行注入即可 autoStartup 设置交换机类型 2. 与SpringBoot2.x整合实战 7.1 配置详解 publisher-confirms 实现一个监听器监听 broker 给我们返回的确认请求RabbitTemplate.ConfirmCallback & Spring Cloud Stream整合实战 Spring Cloud全家桶在整个中小型互联网公司异常的火爆,Spring Cloud Stream也就渐渐的被大家所熟知,本小节主要来绍RabbitMQ 应用启动类 Barista接口 配置文件 接收 启动Con服务,查看管控台 运行Pro测试代码及结果 9 总结 本文我们学习了Spring AMQP的相关知识,通过实战对
本系列是「RabbitMQ实战:高效部署分布式消息队列」书籍的总结笔记。 本篇是「RabbitMQ实战」系列的最后一篇,主要介绍RabbitMQ插件,了解如何安装和启用它,列举一些常用的插件,以及如何自定义。 在介绍之前,先总结下本系列的主要内容,把它们串起来。 如果理解AMQP基本元素和消息模型,上面的概念会很好理解,有2篇文章重点介绍了这块。 有些场景,对RabbitMQ可用性要求比较高,不容许有消息的丢失,需要了解RabbitMQ的可用性保障和实现。 另一个不同的地方在于,Erlang没有java那样可见性概念,拥有的就是一个模块导出列表,如果模块实现了函数fun1、fun2和fun3,但只导出fun1的话,fun2和fun3将无法被外界调用。 另外,还有一个函数参数数量的概念,可以接受名字相同、参数数量不同的函数,因此behavious可以确定函数fun1/1和fun1/2是两个不同的函数。
访问控制 RabbitMQ里有一个vhost的概念,和其它软件中的vhost不太一样,在Apache中是表示一个虚拟的站点,而在这里是表示一个命名空间和权限集合 一个vhost中包含有一堆的exchange
基础操作 启动服务 [root@h102 ~]# /etc/init.d/rabbitmq-server status Status of node rabbit@h102 ... -3191@h102' - home dir: /var/lib/rabbitmq - cookie hash: N3kEGl2Jm7amHtg0ViAg8w== [root@h102 ~]# /etc /init.d/rabbitmq-server start Starting rabbitmq-server: SUCCESS rabbitmq-server. 2.14.5"}]}, {os,{unix,linux}}, {erlang_version,"Erlang R14B04 (erts-5.8.5) [source] [64-bit] [smp:2: 2] [rq:2] [async-threads:64] [kernel-poll:true]\n"}, {memory,[{total,28066048}, {connection_readers
打开防火墙 打开本地(RabbitMQ Server)防火墙 [root@rabbitmq ~]# netstat -ant | grep 15672 tcp 0 0 0.0.0.0 :15672 0.0.0.0:* LISTEN [root@rabbitmq ~]# iptables -L -nv | grep 15672 [root@rabbitmq ~]# grep 15672 /etc/sysconfig/iptables [root@rabbitmq ~]# vim /etc/sysconfig/iptables [root@rabbitmq ~]# grep 15672 /etc/sysconfig/iptables -A INPUT -m state --state NEW -m tcp -p tcp -- rules: [ OK ] [root@rabbitmq ~]# iptables -L -nv | grep 15672 0 0 ACCEPT
RabbitMQ 的相关概念 RabbitMQ 作为一个消息中间件,整体上采用了生产者与消费者模型,主要负责接收,存储和转发消息。 生产者和消费者 RabbitMQ 从宏观上可以视为 ? 其中: Producer: 生产者,负责创建消息,并将消息发布到 RabbitMQ 中 Broker: 消息中间件服务节点 Consumer: 消费者负责订阅队列 并从队列上接收消息。 RabbitMQ 的架构模型 RabbitMQ 的整体架构可以入下图所示 ? 队列 队列是 Rabbit MQ 的内部对象,用于存储消息。 在 RabbitMQ 中,要想使用 交换器将消息头送到正确的队列上,就需要使用 BindingKey 和 RoutingKey。 和 rabbitmq 客户端所依赖的 slf4j 包 <dependencies> <!
RabbitMQ 延迟消息实战RabbitMQ Assistant 是一款 RabbitMQ 可视化管理与监控——深入了解您的队列、订阅与消费消息,展示完整的消息流图以及压力测试。 ---现实生活中有一些场景需要延迟或在特定时间发送消息,例如智能热水器需要 30 分钟后打开,未支付的订单或发送短信、电子邮件和推送通知下午 2:00 开始的促销活动。 第二种选择是使用官方的 RabbitMQ 延迟消息插件。本文详细介绍了 RabbitMQ 延迟消息。TOC什么是 RabbitMQ? RabbitMQ 的主要特性以下是 RabbitMQ 的一些特性:集群:RabbitMQ 中的集群在设计时考虑了两个目标。 参考资料:RabbitMQ Delayed Messages 101: How to Delay & Schedule Messages Made EasyRabbitMQ实战:高效部署分布式消息队列
RabbitMQ简介 RabbitMQ使用Erlang语言开发的开源消息队列系统,基于AMQP协议来实现(AMQP的主要特征是面向消息、队列、路由、可靠性、安全)。 图一 图二 RabbitMQ比较重要的几个概念: 虚拟主机:RabbitMQ支持权限控制,但是最小控制粒度为虚拟主机。 服务配置(application.properties) #rabbitmq相关配置 spring.rabbitmq.host=192.168.15.131 spring.rabbitmq.port=5672 spring.rabbitmq.username=admin spring.rabbitmq.password=123456 2.交换机——DirectExchange DirectExchange是 虽然RabbitMQ支持RPC接口调用,但不推荐使用。 原因: 1)RPC默认为单线程阻塞模型,效率极低。 2)需要手动实现多线程消费。
什么是Confirm机制 消息的确认 Pro投递消息后,若Broker收到消息,则会给Pro一个应答 Pro接收应答 用来确定该消息是否正常地发送到Broker,这种方式也是消息可靠性投递的核心保障 2 channel.confirmSelect() 在channel上添加监听:addConfirmListener,监听成功和失败的返回结果,根据具体的结果对消息进行重新发送、或记录日志等后续处理 4 代码实战
2 Return机制的实现 添加return监听:addReturnListener,Pro去监听这些不可达的消息,做一些后续处理。 比如记录消息日志或及时去跟踪记录,有可能重新设置一下就好了。 在基础API中的一个关键配置项:Mandatory true,则监听器会接收到路由不可达的消息,然后进行后续处理 false,则broker自动删除该消息 3 代码实战 Con ?
RabbitMQ实战应用技巧 1.1. 前言 由于项目原因,之后会和RabbitMQ比较多的打交道,所以让我们来好好整理下RabbitMQ的应用实战技巧,尽量避免日后的采坑 1.2. =localhost:5672 spring.rabbitmq.username=user spring.rabbitmq.password=123456 spring.rabbitmq.virtual-host =5 spring.rabbitmq.listener.simple.max-concurrency=10 spring.rabbitmq.publisher-confirms=true spring.rabbitmq.publisher-returns =true spring.rabbitmq.template.mandatory=true spring.rabbitmq.listener.simple.acknowledge-mode=manual arguments : 这个参数用来添加一些额外参数的,如下图片 比如添加x-message-ttl为5000,则表示消息超过5秒没被处理就会超时过期; x-expires设置120000表示队列在2分钟内没被消费则被删除
纯java应用中work、publisher confirm模式的示例 延迟消息队列示例 基础环境搭建 本文基于docker来安装RabbitMQ,通过pull当前最新版本rabbitmq:3.8.5- ,拷贝到容器中 docker cp E:\dev\2try\backends\hiboot\other\rabbitmq\rabbitmq_delayed_message_exchange-3.8.0. receiver msg:hello.1 receiver[1] receiver msg:hello..2 receiver[2] receiver msg:hello..2 routing路由模式 官方资料 https://www.rabbitmq.com/getstarted.html rabbitmq社区插件 https://www.rabbitmq.com/community-plugins.html 延迟消息插件详情 https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases/tag/v3.8.0rabbitmq
1. websocket+rabbitmq实战 1.1. 前言 接到的需求是后台定向给指定web登录用户推送消息,且可能同一账号会登录多个客户端都要接收到消息 1.2. 遇坑 基于springboot环境搭建的websocket+rabbitmq,搭建完成后发现websocket每隔一段时间会断开,看网上有人因为nginx的连接超时机制断开,而我这似乎是因为长连接空闲时间太长而断开 正式代码 1.3.1. rabbimq部分 application.properties配置 spring.rabbitmq.addresses = i.tzxylao.com:5672 spring.rabbitmq.username = admin spring.rabbitmq.password = 123456 spring.rabbitmq.virtual-host = / spring.rabbitmq.connection-timeout <String, Object> getUserCode(HttpSession session) { Map<String, Object> map = new HashMap<>(2)
RabbitMQ简介 RabbitMQ使用Erlang语言开发的开源消息队列系统,基于AMQP协议来实现(AMQP的主要特征是面向消息、队列、路由、可靠性、安全)。 图一 图二 RabbitMQ比较重要的几个概念: 虚拟主机:RabbitMQ支持权限控制,但是最小控制粒度为虚拟主机。 服务配置(application.properties) #rabbitmq相关配置 spring.rabbitmq.host=192.168.15.131 spring.rabbitmq.port=5672 spring.rabbitmq.username=admin spring.rabbitmq.password=123456 2.交换机——DirectExchange DirectExchange是 虽然RabbitMQ支持RPC接口调用,但不推荐使用。 原因: 1)RPC默认为单线程阻塞模型,效率极低。 2)需要手动实现多线程消费。