首页 > 其他分享 >docker rabbitmq数据持久化

docker rabbitmq数据持久化

时间:2023-02-17 19:11:48浏览次数:70  
标签:持久 RabbitMQ rabbitmq 持久性 docker 日志 消息

RabbitMQ消息队列怎样做到服务宕机或重启消息不丢失
RabbitMQ确保持久性消息能从服务器重启中恢复的方式是,将它们写入磁盘上的一个持久化日志文件。当发布一个持久性消息到持久交换机上时,Rabbit会在消息提交到日志文件后才发送响应。记住,之后这条消息如果路由到了非持久队列的话,它会自动从持久性日志中移除,并且无法从服务器重启中恢复。如果你使用持久性消息的话,则确保之前提到的持久性消息的那三点都必须做到位。一旦你从持久性队列中消费了一个持久性消息的话(并且确认了它),RabbitMQ会在持久化日志中把这条消息标记为等待垃圾收集。在你消费持久性消息前,如果RabbitMQ重启的话,服务器会自动重建交换机和队列(以及绑定),重播持久性日志文件的消息到合适的队列或者交换机上(取决于Rabbit服务器宕机的时候,消息处在路由过程的哪个环节)。
虽然持久化消息可以做到消息的不丢失,但持久化的消息在进入队列前会被写到磁盘,这个过程比写到内存慢得多,所以会严重的影响性能,可能导致消息的吞吐量降低10倍不止。所以,在做消息持久化前,一定要认真考虑性能和需求之间的平衡关系。
关键两点:
1,docker volume 或者本地数据目录映射到/var/lib/rabbitmq;
2,设定hostname

rabbitmq:
       image: rabbitmq:3.8.3-management
       container_name: rabbitmq
       restart: always
       hostname: rabbitmq_host
       ports:
       - 15672:15672   # web UI 管理接口
       - 5672:5672 # 生产者和消费者连接使用的接口
       volumes:
       - ./log:/var/log/rabbitmq #挂载 RabbitMQ日志
       - ./data:/var/lib/rabbitmq #挂载 RabbitMQ数据
       environment:
       - RABBITMQ_DEFAULT_USER=root
       - RABBITMQ_DEFAULT_PASS=123456

标签:持久,RabbitMQ,rabbitmq,持久性,docker,日志,消息
From: https://www.cnblogs.com/drivertobolin/p/17131326.html

相关文章

  • 外部连接不上 docker内的Mysql,telnet不通3306
    本机vm打开虚拟机后,自动启动mysql,查看容器运行一切正常:dockerps-a 所有映射的端口,在外部都telnet不通,比如3306、6379等都不行。想着在别人都ok的,在我这里不行,问题......
  • docker-compose 配置 es kibana
    直接上代码elasticsearch.ymlhttp:host:0.0.0.0xpack.security.enabled:falsexpack.security.enrollment.enabled:truexpack.security.http.ssl:enabled:fal......
  • 30分钟学会Docker里面开启k8s(Kubernetes)登录仪表盘
    前言我们之前搭建了第一个docker项目:windows环境30分钟从0开始快速搭建第一个docker项目(带数据库交互):https://www.cnblogs.com/xiongze520/p/15069441.html然而我们知道......
  • .NetCore6程序部署到Docker上
    使用Docker部署应用程序首先确保已经安装Docker 桌面软件,如下图: 然后,把需要部署到Docker上面的项目,咱们先添加Docker的支持,启动项目右键 -> 添加 -> Docker支持,选......
  • docker容器之dockerfile&docker-compose CMD/entrypoint详解
    docker容器之dockerfile&docker-composeCMD/entrypoint详解本文目录 [隐藏]I.CMDII.ENTRYPOINTIII.示例ENTRYPOINTCMD/command此前的RUN和CMD,我......
  • 将 ASP.Net Core WebApi 应用打包至 Docker 镜像
    将ASP.NetCoreWebApi应用打包至Docker镜像运行环境为Windows10专业版21H1,DockerDesktop3.6.0(67351),DockerEngine20.10.81.ASP.NetCoreRuntime......
  • mysql8 docker 安装
    1.镜像下载dockerpullmysql:8.0.212.创建目录创建data,conf等目录,用于保存mysql的数据3.启动镜像dockerrun-it-d--namemysql--net=host\-v/var/appl......
  • docker desktop 转圈圈 一直启动中或者一直停止中
    dockerdesktop,右键点击setting,界面打开后一直转圈圈问题1、打开运行,在空框中输入powershell并点击确定:2、在PowerShell中输入: dockerimages报错errorduringc......
  • SpringBoot 整合 RabbitMQ
    SpringBoot整合RabbitMQ生产者application.yml#配置RabbitMQ的基本信息spring:rabbitmq:#iphost:192.168.36.100#usernameuse......
  • docker目录迁移流程
      概述在安装测试最新版本的HOMER7的过程中,docker作为基础工具碰到一些问题,针对问题进行总结。docker的默认工作目录在/var目录,而在我们的环境中,/var目录空间预留不......