继上篇 RabbitMQ实战4.发布与订阅 交换机的路由功能 注意!交换机为匿名交换机时,routing_key指的是队列名,这只是一个特例!这个参数的本意是路由键名!
本系列是「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后,会显示日志的路径: ?
创建集群 当前的集群为单节点 [root@rabbitmq ~]# rabbitmqctl cluster_status Cluster status of node 'rabbit@rabbitmq [{nodes,[{disc,['rabbit@rabbitmq']}]}, {running_nodes,['rabbit@rabbitmq']}, {cluster_name,<<"rabbit @rabbitmq">>}, {partitions,[]}] [root@rabbitmq ~]# Tip: 也可以在管理界面里看得到 安装Rabbitmq [root@new-mq-node nginx [root@new-mq-node src]# wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.5.6/rabbitmq-server rabbitmq-server-3.5.6-1.noarch.rpm Resolving www.rabbitmq.com... 192.240.153.117 Connecting to www.rabbitmq.com
查看端口运行情况 [root@h102 rabbitmq]# netstat -an | grep -E "(4369|25672|5672|5671|15672|61613|61614|1883|8883 tcp 0 0 :::5672 :::* LISTEN [root@h102 rabbitmq [root@h102 rabbitmq]# rabbitmqctl status Status of node rabbit@h102 ... -5175@h102' - home dir: /var/lib/rabbitmq - cookie hash: N3kEGl2Jm7amHtg0ViAg8w== [root@h102 rabbitmq ]# This command instructs the RabbitMQ node to terminate.
[root@h101 ~]# ---- 连接RabbitMQ python连接RabbitMQ python连接RabbitMQ 生产脚本 [root@h102 python]# cat p.py #
RabbitMQ RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。 RabbitMQ 七种队列模式 简单模式(Hello World):做最简单的事情,一个生产者对应一个消费者,RabbitMQ相当于一个消息代理,负责将A的消息转发给B。 5.启动 #启动后台管理 . /rabbitmq-plugins enable rabbitmq_management #后台运行rabbitmq . 7200; /** * 轮询查询订单状态的睡眠时间,单位:秒 */ public static final Integer POLLING_STATUS_TIME = 2000; } 5、
RABBITMQ_NODE_PORT 5672 RABBITMQ_DIST_PORT 25672 RABBITMQ_NODENAME RABBITMQ_CONF_ENV_FILE RABBITMQ_CONFIG_FILE #没有.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 enable rabbitmq_federation rabbitmq-plugins enable rabbitmq_federation_management rabbitmq-plugins enable rabbitmq_shovel rabbitmq-plugins enable rabbitmq_shovel_management 集群种erlang和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 中直接进行注入即可 很多基于 RabbitMQ 的自制定化后端管控台在进行设置的时候,也是根据这一去实现的 图片 图片 图片 图片 图片5 SpringAMQP消息适配器-MessageListenerAdapter消息监听适配器 & Spring Cloud Stream整合实战Spring Cloud全家桶在整个中小型互联网公司异常的火爆,Spring Cloud Stream也就渐渐的被大家所熟知,本小节主要来绍RabbitMQ
很多基于 RabbitMQ 的自制定化后端管控台在进行设置的时候,也是根据这一去实现的 5 SpringAMQP消息适配器-MessageListenerAdapter 消息监听适配器,通过反射将消息处理委托给目标监听器的处理方法 与SpringBoot2.x整合实战 7.1 配置详解 publisher-confirms 实现一个监听器监听 broker 给我们返回的确认请求RabbitTemplate.ConfirmCallback & Spring Cloud Stream整合实战 Spring Cloud全家桶在整个中小型互联网公司异常的火爆,Spring Cloud Stream也就渐渐的被大家所熟知,本小节主要来绍RabbitMQ 8.3 RabbitMQ绑定概述 默认情况下,RabbitMQ Binder实现将每个目标映射到TopicExchange。对于每个使用者组,Queue绑定到该TopicExchange。 应用启动类 Barista接口 配置文件 接收 启动Con服务,查看管控台 运行Pro测试代码及结果 9 总结 本文我们学习了Spring AMQP的相关知识,通过实战对
本系列是「RabbitMQ实战:高效部署分布式消息队列」书籍的总结笔记。 本篇是「RabbitMQ实战」系列的最后一篇,主要介绍RabbitMQ插件,了解如何安装和启用它,列举一些常用的插件,以及如何自定义。 在介绍之前,先总结下本系列的主要内容,把它们串起来。 有些场景,对RabbitMQ可用性要求比较高,不容许有消息的丢失,需要了解RabbitMQ的可用性保障和实现。 /rabbitmq-plugins enable <plugin-name> 禁用插件,禁用插件后,需要重启RabbitMQ服务器: 1 . 最后,将交换器注册到RabbitMQ,RabbitMQ维护了一个注册表,用这张表来跟踪所有的交换器类型及其模块名称,假设将消息发布到fanout交换器上,RabbitMQ会进入注册表,检查由哪个模块来实现
RabbitMQ 延迟消息实战RabbitMQ Assistant 是一款 RabbitMQ 可视化管理与监控——深入了解您的队列、订阅与消费消息,展示完整的消息流图以及压力测试。 在真实应用中,对于延迟队列可以根据延迟时间的长短分为多个等级,一般分为 5 秒、10 秒、30 秒、1 分钟、5 分钟、10 分钟、30 分钟、1 小时这几个维度,当然也可以再细化一下。 参考下图,为了简化说明,这里只设置了 5 秒、10 秒、30 秒、1 分钟这四个等级。根据应用需求的不同,生产者在发送消息的时候通过设置不同的路由键,以此将消息发送到与交换器绑定的不同的队列中。 这里队列分别设置了过期时间为 5 秒、10 秒、30 秒、1 分钟,同时也分别配置了 DLX 和相应的死信队列。 参考资料: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 5.交换机——FanoutExchange FanoutExchange交换机是转发消息到所有绑定队列(广播模式,和routingKey没有关系)。 安装RabbitMQ请参考:CentOS在线安装RabbitMQ3.7 本帖源代码:https://gitee.com/skychenjiajun/spring-boot
channel.confirmSelect() 在channel上添加监听:addConfirmListener,监听成功和失败的返回结果,根据具体的结果对消息进行重新发送、或记录日志等后续处理 4 代码实战
在基础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表示自动删除,当没有Connection连接到队列的时候,会自动删除 arguments : 这个参数用来添加一些额外参数的,如下图片 比如添加x-message-ttl为5000,则表示消息超过5秒没被处理就会超时过期
纯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. 遇坑 基于springboot环境搭建的websocket+rabbitmq,搭建完成后发现websocket每隔一段时间会断开,看网上有人因为nginx的连接超时机制断开,而我这似乎是因为长连接空闲时间太长而断开 超过一分钟会断线,前端发起请求重连 服务器正常,客户端关闭或注销,服务器正常收到通知,去除对应客户端session 服务器异常,客户端正常,客户端发现连不上服务器会尝试重连3次,3次都连不上放弃重连 rabbitmq 正式代码 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 5.交换机——FanoutExchange FanoutExchange交换机是转发消息到所有绑定队列(广播模式,和routingKey没有关系)。 安装RabbitMQ请参考:CentOS在线安装RabbitMQ3.7 本帖源代码:https://gitee.com/skychenjiajun/spring-boot
RabbitMQ will prevent the creation of a RAM-node-only cluster in many situations, but it can’t absolutely
加入集群 rabbitmqctl join_cluster rabbit@h101