本系列是「RabbitMQ实战:高效部署分布式消息队列」书籍的总结笔记。 地址: spring.rabbitmq.host=127.0.0.1 spring.rabbitmq.port=5672 spring.rabbitmq.username=guest spring.rabbitmq.password =guest spring.rabbitmq.publisher-confirms=true spring.rabbitmq.virtual-host=/ LogRabbitConfig实现 使用Spring 另外,rabbitmq提供了管理界面插件,更方便的查看各种统计,可以通过下面的命令开启: 1 sudo . /rabbitmq-plugins enable rabbitmq_management ? 查看日志 可以在文件系统中查看日志,启动rabbitmq后,会显示日志的路径: ?
RabbitMQ RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。 RabbitMQ 七种队列模式 简单模式(Hello World):做最简单的事情,一个生产者对应一个消费者,RabbitMQ相当于一个消息代理,负责将A的消息转发给B。 /sbin:$PATH 3.PATH路径更新 source /etc/profile 4.开启 web 管理插件 rabbitmq-plugins enable rabbitmq_management /rabbitmq-plugins enable rabbitmq_management #后台运行rabbitmq . org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency> 3、
MQ消息队列中间件,P2P,PUB/SUB 生产者消费者模型 erlang中实现AMQP 1 安装配置 2 rabbitmqctl status 3 增加用户?? rabbitmqctl start_app rabbitmqctl set_cluster_name cluster_name rabbitmqctl list_queues -p vhosts x1 x2 x3 #没有.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 集群的搭建 节点的删除、添加、更新 -- rabbitmq单机多节点的配置 监控 rabbitmq 通过3种方式实现分布式部署:集群、federation、shovel rabbitmq-plugins
实战干货:编程严选网 本文讲解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 中直接进行注入即可 key-value 匹配 DirectExchange :按照 routingkey 分发到指定队列 TopicExchange : 多关键字匹配 测试代码图片 查看管控台图片 图片3 & Spring Cloud Stream整合实战Spring Cloud全家桶在整个中小型互联网公司异常的火爆,Spring Cloud Stream也就渐渐的被大家所熟知,本小节主要来绍RabbitMQ
key-value 匹配 DirectExchange :按照 routingkey 分发到指定队列 TopicExchange : 多关键字匹配 测试代码 查看管控台 3 使用SpringAMQP 去声明,就需要使用 @Bean 的声明方式 查看管控台 3 消息模板 - RabbitTemplate 上节中最后提到,这是与与 SpringAMQP 整合发送消息的关键类 与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插件,了解如何安装和启用它,列举一些常用的插件,以及如何自定义。 在介绍之前,先总结下本系列的主要内容,把它们串起来。 另一个不同的地方在于,Erlang没有java那样可见性概念,拥有的就是一个模块导出列表,如果模块实现了函数fun1、fun2和fun3,但只导出fun1的话,fun2和fun3将无法被外界调用。 需要缓存已路由的消息,每当交换器路由消息的时候,就将该消息存储到某个数据库中,该功能可在函数route/2中实现; 当队列绑定到交换器时,需要把缓存的消息投递过去,该功能可在函数add_binding/3中实现 ; 当交换器删除的时候,需要丢弃缓存的消息,该功能可在函数delete/3中实现; 然后,实现交换器behavious,我没有看相关实现细节,感兴趣的可以查看实现代码:传送门。
list_user_permissions 可以查看指定用户在不同vhost中的权限
0.0.0.0/0 tcp dpt:21443 to:192.168.66.111:1443 [root@net-border ~]# ---- 访问控制 管理插件在已有的RabbitMQ
停止服务 [root@h102 ~]# /etc/init.d/rabbitmq-server stop Stopping rabbitmq-server: rabbitmq-server. [root@h102 ~]# /etc/init.d/rabbitmq-server status Status of node rabbit@h102 ... no other nodes on h102 * suggestion: start the node current node details: - node name: 'rabbitmq-cli -4036@h102' - home dir: /var/lib/rabbitmq - cookie hash: N3kEGl2Jm7amHtg0ViAg8w== [root@h102 ~]#
RabbitMQ 延迟消息实战RabbitMQ Assistant 是一款 RabbitMQ 可视化管理与监控——深入了解您的队列、订阅与消费消息,展示完整的消息流图以及压力测试。 第二种选择是使用官方的 RabbitMQ 延迟消息插件。本文详细介绍了 RabbitMQ 延迟消息。TOC什么是 RabbitMQ? RabbitMQ 的主要特性以下是 RabbitMQ 的一些特性:集群:RabbitMQ 中的集群在设计时考虑了两个目标。 将插件复制到 RabbitMQ 的插件文件夹,然后运行以下命令启用它:# 下载插件wget https://github.com/rabbitmq/rabbitmq-delayed-message-exchange 参考资料: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 3.交换机——TopicExchange TopicExchange是按规则转发消息,是交换机中最灵活的一个。也是最常用的一个。 ? 安装RabbitMQ请参考:CentOS在线安装RabbitMQ3.7 本帖源代码:https://gitee.com/skychenjiajun/spring-boot
Pro发送消息到Broker,Broker接收到消息后,产生回送响应 Pro中有一个Confirm Listener异步监听响应应答 3 如何实现Confirm确认消息? channel.confirmSelect() 在channel上添加监听:addConfirmListener,监听成功和失败的返回结果,根据具体的结果对消息进行重新发送、或记录日志等后续处理 4 代码实战
RabbitMQ工作模式介绍 1. simple简单模式 模式介绍 ? ; import com.itheima.rabbitmq.util.ConnectionUtil; import com.rabbitmq.client.*; import java.io.IOException ; import com.itheima.rabbitmq.util.ConnectionUtil; import com.rabbitmq.client.*; import java.io.IOException ; import com.rabbitmq.client.Channel; import com.rabbitmq.client.Connection; import com.rabbitmq.client.ConnectionFactory 生产者 package com.pjh; import com.rabbitmq.client.BuiltinExchangeType; import com.rabbitmq.client.Channel
在基础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 =/ spring.rabbitmq.connection-timeout=1000 ##设置监听限制:最大10,默认5 spring.rabbitmq.listener.simple.concurrency =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
纯java应用中work、publisher confirm模式的示例 延迟消息队列示例 基础环境搭建 本文基于docker来安装RabbitMQ,通过pull当前最新版本rabbitmq:3.8.5- :3.8.5-management 同时,如有需要,也可以通过-e RABBITMQ_DEFAULT_USER=user -e RABBITMQ_DEFAULT_PASS=password来指定相关的默认用户名称和密码 ,拷贝到容器中 docker cp E:\dev\2try\backends\hiboot\other\rabbitmq\rabbitmq_delayed_message_exchange-3.8.0. 官方资料 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. 客户端正常且空闲时间不超过1分钟,则情况正常,超过一分钟会断线,前端发起请求重连 服务器正常,客户端关闭或注销,服务器正常收到通知,去除对应客户端session 服务器异常,客户端正常,客户端发现连不上服务器会尝试重连3次 ,3次都连不上放弃重连 rabbitmq定向推送,按需求需要一台机器对应一批用户,所以定制化需要服务启动的时候定向订阅该ip对应的队列名,简单说就是动态队列名的设定,所以又复杂了点,不能直接在注解写死。 正式代码 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
RabbitMQ简介 RabbitMQ使用Erlang语言开发的开源消息队列系统,基于AMQP协议来实现(AMQP的主要特征是面向消息、队列、路由、可靠性、安全)。 图一 图二 RabbitMQ比较重要的几个概念: 虚拟主机:RabbitMQ支持权限控制,但是最小控制粒度为虚拟主机。 服务配置(application.properties) #rabbitmq相关配置 spring.rabbitmq.host=192.168.15.131 spring.rabbitmq.port=5672 3.交换机——TopicExchange TopicExchange是按规则转发消息,是交换机中最灵活的一个。也是最常用的一个。 ? 安装RabbitMQ请参考:CentOS在线安装RabbitMQ3.7 本帖源代码:https://gitee.com/skychenjiajun/spring-boot
Spring AMQP 的特征 用于异步处理入站消息的侦听器容器 RabbitTemplate 用于发送和接收消息 RabbitAdmin 用于自动声明队列、交换和绑定 3. 它通知到 rabbitmq ,rabbitmq 根据回执决定是 重复,或者放弃。 有三种回执模式: NONE:不发送确认。 receiveForManual msg =%s ,correlationId = %s", msg, returned_message_correlation)); i++; if (i % 3 log.info("# 接收消息..."); channel.basicAck(tag, false); } else if (i % 3 log.error("# 消息已重复处理失败,拒绝再次接收..."); channel.basicReject(tag, false); } else if (i % 3
本系列是「RabbitMQ实战:高效部署分布式消息队列」书籍的总结笔记。 从本篇开始总结「RabbitMQ实战」系列的阅读笔记,RabbitMQ是一个开源的消息代理和队列服务器,可以通过基本协议在完全不同的应用之间共享数据,可以将作业排队以便让分布式服务进行处理。 还有一种场景,在接收到消息后,如果不想处理,可以通过下面方式处理: 把消费者从RabbitMQ服务器断开连接,,这样RabbitMQ会自动将消息入队并发送给另外一个消费者; 如果不想发送给其他消费者处理 虚拟主机 每个RabbitMQ服务器都能创建虚拟消息服务器,称为虚拟主机(vhost),每个RabbitMQ本质上是一个mini版的RabbitMQ服务器,拥有自己的队列、交换器、绑定,还有自己的权限机制 RabbitMQ通过「发送方确认模式」来解决上面的问题。