oCommunicator_RabbitMQ_Handler
全部标签目录一、配置二、使用(1)创建普通交换机(2)创建普通队列(3)绑定交换机--队列(4)创建带有死信交换机的队列(5)生产者(6)消费者(7)Message对象(8)延时队列优化(死信实现延时,有缺陷)三、Rabbitmq插件实现延迟队列(重点)四、发布确认(1)确认回调接口(监控消息是否被收到)(2)回退消息五、备份交换机六、其他知识(1)幂等性(消息重复消费)(2)队列优先级(3)惰性队列一、配置 org.springframework.boot spring-boot-starter-amqp yaml#RabbitMQ配置#地址spring.rabbitmq.host=1
文章目录一、问题场景二、定位思路1.外部原因2.Rabbitmq内部因素三、解决方案外部因素Rabbitmq内部原因总结一、问题场景在LinuxUbuntu18.04上通过Docker安装配置Rabbitmq后,按照网上提供的教程经验,发现打开http://{ip}+15672无法打开相关的RabbitmqWeb管理平台界面相关博客Ubuntu安装DockerDocker安装Rabbitmq二、定位思路这里无法通过15672端口获取相关文件可以划分为两个方向,笔者将其归类为外部因素和Rabbitmq内部原因1.外部原因这里的外部原因主要指除去Rabbitmq本身之外,Linux虚拟机等相关因素
log文件地址C:\Users\Administrator\AppData\Roaming\RabbitMQ\log\rabbit@localhost.loglog文件作用rabbit@localhost.logMQ启动、连接日志rabbit@localhost-sasl.logsaal用来记录Erlang相关的信息,例如查看Erlang崩溃的报告RabbitMQ官网Log相关介绍Logging—RabbitMQLogLevelLoglevelVerbositySeveritydebugmostverboselowestseverityinfowarningerrorcriticalhighe
记录一下自己遇到的问题,在开启所有端口且关闭防火墙的情况下,无法访问 ,排查问题后发现是因为我直接dockerpullrabbitmq,未安装RabbitMQ的web管理界面。解决方法如下:1、进入rabbitmq容器dockerexec-itrabbitmq/bin/bash 2、执行rabbitmq-pluginsenablerabbitmq_management3、刷新页面即可访问
延迟队列延迟队列:简单说就是发送出去的消息经过给定的时间后,消费者才能看见消息(消费消息)。这里简单说下步骤:创建一个队列,如:bs-queue,设置死信交换机(死信交换机路由key(这是可选的))及队列,如:dead-exchange;消息的消费端监听该dead-queue队列。设置消息有效期参数x-message-ttl参数(值为自己需要延迟的时间,单位:毫秒)。发送消息发送到bs-queue上。由于消息消费端监听的是死信队列,所以只需要等待指定的时间后消息会自动被转发到死信队列上(dead-queue)。消息的消费端监听dead-queu队列即可。优先级队列优先级队列是在RabbitMQ
1.部署规划当前规划中,只启动一个HAProxy服务,主要用来做RabbitMQ节点的负载均衡和代理,但是HAProxy可能会出现单点故障,后续需要启动多个HAProxy节点,然后结合Keepalived来进行设置虚拟IP做故障转移节点名称节点主机名IP地址角色运行服务cluster01cluster01192.168.12.48DockerSwarmManager&NodeHAProxy&RabbitMQ-Node01cluster01cluster02192.168.12.49DockerSwarmManager&NodeRabbitMQ-Node02cluster01cluster031
写在开始:本文合计2万多字,500多行,阅读可能需要花费一点时间;主要包括消息队列和常用MQ(比如RabbitMQ,RocketMQ和Kafka)的部分高频面题,可供复习参考使用导读一.RabbitMQ如何保证消息不丢失日常应用场景:异步发送(验证码、短信、邮件==),MySQL和Redis、ES之间的数据同步、分布式事务、削峰填谷等等生产者确认机制消息持久化消费者确认小结开启生产者确认机制,确保生产者的消息能到达队列开启持久化功能,确保消息被消费前在队列不会丢失开启消费者确认机制为auto,由spring确认消息处理成功后完成ack开启消费者失败重试机制,多次重试失败后将消息投递到异常交换机
1.安装rabbitmq,由于rabbitmq需要erlang语言支持,所以需要安装erlang。 apt-getinstallerlang 执行命令查是否安装成功:erl 此时进入Eshell退出命令:Ctrl+c一致按到退出为止2.查看erlang与rabbitmq版本对应关系 RabbitMQErlangVersionRequirements—RabbitMQ 3.安装最新版本 更新安装包:sudoapt-getupdate 安装最新版本:sudoapt-getinstallrabbitmq-server4.安装指定版本准备环境:cur
一、同步通讯与异步通讯大多数情况下会使用同步,对并发没有很高的要求,但是对时效性有很高的要求,因为我希望我查询到的信息立马就在下面的业务中用到,那必须得用同步调用(因为异步调用只是通知干一件事情,干完之后又不会告诉我,我们没有办法等待异步通讯的结果)而如果说不需要对方的结果,只是希望对方能干一件事情,对吞吐量的要求、并发的要求较高,还希望解除服务间的耦合关系,那此时应该使用异步通信1.1同步通讯微服务间基于Feign的调用就属于同步方式,存在一些问题优点:时效性较强,可以立即得到结果缺点耦合度高:每次加入新的需求,都要修改原来的代码性能下降:调用者需要等待服务提供者响应,如果调用链过长则相应时
1.使用docker查询rabbitmq的镜像dockersearchrabbitmq2.安装镜像如果需要安装其他版本在rabbitmq后面跟上版本号即可 dockerpullrabbitmq:3.7.7-management 说明dockerpullrabbitmq:版本号-management 安装name为rabbitmq的这里是直接安装最新的 dockerpullrabbitmq 3、根据下载的镜像创建和启动容器dockerrun-d--hostnamemy-rabbit--namerabbit-p15672:15672-p5673:5672rabbitmq-d后台运行容器;--