Python 全栈系列232 再次搭建RabbitMQ

说明

最近想重新上RabbitMQ,主要目的还是为了分布式任务调度。在Kafka和RabbitMQ两者犹豫了一下,还是觉得RabbitMQ好一些。

在20年的时候有搞过一阵子的RabbitMQ,看了下当时的几篇文章,觉得其实想法一直没变过。
在这里插入图片描述
Python - 装机系列24 消息工具 RabbitMQ详细了解介绍了丢包的问题,这个估计是我当时放弃使用这个的直接原因。现在想来挺逗的,完全是因为测试服务器ubuntu使用wifi连接不稳定导致的。
文章参考RMQ官网,总结了7种队列工作模式。文章内还有使用pika进行测试的部分,我最主要使用模式2。
在这里插入图片描述
文章还提到了原来部署时的一些问题,之后可以参考。

【Python 全栈系列49 - Pika连接RabbitMQ的封装】这篇当时没有继续写,按照现在的风格,应该是封装为RabbitAgent。

Python 全栈系列6 -消息通信(RabbitMQ、Pika)介绍了RabbitMQ最基本的使用,包括消息的格式等。

建模杂谈系列38- 基于celery、rabbitmq、redis和asyncio的分布并行处理(概述)介绍了io并行和cpu并行的特点,以及使用celery+rabbitmq+flower进行分布式任务的样例。

本篇仅介绍RabbitMQ的(再次)搭建。

内容

1 变化

现在和几年之前,我的infrastructure还是变了很多。

  • 我用Redis Stream实现了一个简化版的消息队列(同时也实现了简单的分布式任务)
  • 实现了多种数据库的Agent: 所以应该基于Pika封装一个微服务(RabbitAgent)
  • 自己搭建了镜像仓库 :规范命名并上传保存
  • 建立了数据的存储规范(分片、分区、分块):可以用于任务的同步
  • 可以方便的进行文件同步:这样大数据不必放在消息队列,而是由worker执行远程同步拉取(这样也避免了worker没有多余公网端口的问题)

基于此,本次的实现将参考过去一些好的实践进行部署,之后也会借鉴RabbitMQ和Celery来完善自己的分布式任务。

2 搭建

拉取镜像
在这里插入图片描述
官网介绍的
在这里插入图片描述

# latest RabbitMQ 3.13
docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3.13-management

在本地创建文件夹,并分配两个端口给这个服务。

然后就可以启动服务了,输入默认用户密码 guest/guest就可以进行访问了。
在这里插入图片描述
我想起来,最初的时候我是直接在ubuntu系统上面装rabbitmq的,依稀记得装erlang的过程。那真是烦死了,还好有docker。

在rabbitmq的官网页面有介绍配置用户密码的启动方式,暂时就先这样。

docker run -d --hostname my-rabbit --name some-rabbit -e RABBITMQ_DEFAULT_USER=user -e RABBITMQ_DEFAULT_PASS=password rabbitmq:3-management

本地化的一些改造
首先将镜像本地化,这样以后锁定本地的版本就可以了

docker tag rabbitmq:3.13-management myregistry.domain.com:24052/tool.rabbitmq_3.13_management:v100
docker push myregistry.domain.com:24052/tool.rabbitmq_3.13_management:v100

一个较为完整的启动命令为

docker run -d\--restart=always \--name=rabbitmq \--hostname my-rabbit \-v /etc/localtime:/etc/localtime  \-v /etc/timezone:/etc/timezone\-v /etc/hostname:/etc/hostname \-e "LANG=C.UTF-8"\-e RABBITMQ_DEFAULT_USER=YOURS \-e RABBITMQ_DEFAULT_PASS=YOURS \-p 24091:5672\-p 24092:15672 \myregistry.domain.com:24052/tool.rabbitmq_3.13_management:v100

3 Next

开发RabbitAgent微服务,对RabbitMQ的操作进行简化。

借用RabbitMQ的队列模式,实现分布式任务。

使用celery+rabbitmq实现分布式任务。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/271995.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

贪心算法(greedy algorithm,又称贪婪算法)详解(附例题)

目录 基本思想一)概念二)找出全局最优解的要求三)求解时应考虑的问题四)基本步骤五)贪心策略选择六)实际应用 1.零钱找回问题2.背包问题3.哈夫曼编码4.单源路径中的Djikstra算法5.最小生成树Prim算法 基本…

构建留学平台技术架构:从设计到实现

随着全球化进程的加速和人们对国际教育的需求不断增长,留学行业也迎来了快速发展的机遇。作为留学服务的重要组成部分,留学平台的技术架构设计至关重要。本文将探讨留学平台技术架构的设计和实现过程,以及相关的技术选择、挑战和解决方案。 …

如何在Windows系统部署Jellyfin Server并实现公网访问内网影音文件

文章目录 1. 前言2. Jellyfin服务网站搭建2.1. Jellyfin下载和安装2.2. Jellyfin网页测试 3.本地网页发布3.1 cpolar的安装和注册3.2 Cpolar云端设置3.3 Cpolar本地设置 4.公网访问测试5. 结语 1. 前言 随着移动智能设备的普及,各种各样的使用需求也被开发出来&…

746. 使用最小花费爬楼梯 (Swift版本)

题目 给你一个整数数组 cost,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。 你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。 请你计算并返回达到楼梯顶部的最低花费。 限制条件 2…

地址分词 | EXCEL批量进行地址分词,标准化为十一级地址

一 需求 物流需要对用户输入地址进行检查,受用户录入习惯地址可能存在多种问题。 地址标准化是基于地址引擎和地址大数据模型,自动将地址信息标准化为省、市、区市县、街镇、小区、楼栋、单元、楼层、房屋、房间等元素,补充层级缺失数据、构建…

图像处理与视觉感知---期末复习重点(2)

文章目录 一、空间域图像增强1.1 图像增强1.2 几种变换 二、直方图2.1 直方图定义2.2 直方图均衡化2.3 离散情况2.4 例子2.5 直方图匹配2.6 例子2.7 一道例题 三、空间滤波器3.1 定义3.2 例子 四、平滑空间滤波器4.1 作用与分类4.2 线性滤波器 五、统计排序滤波器5.1 定义与分类…

挑战杯 基于深度学习的视频多目标跟踪实现

文章目录 1 前言2 先上成果3 多目标跟踪的两种方法3.1 方法13.2 方法2 4 Tracking By Detecting的跟踪过程4.1 存在的问题4.2 基于轨迹预测的跟踪方式 5 训练代码6 最后 1 前言 🔥 优质竞赛项目系列,今天要分享的是 基于深度学习的视频多目标跟踪实现 …

SQL设计时增加说明列

后关闭sql Studio,然后打开注册表,注册表地址: 计算机\HKEY_CURRENT_USER\SOFTWARE\Microsoft\SQL Server Management Studio\18.0_IsoShell\DataProject 如有版本不同,红色内容有所变化,修改内容如下: SSVPropViewColumnsSQL70,SSVPropViewColumnsSQL80 全修改为 1,2,6,7…

Pinctrl子系统_04_Pinctrl子系统主要数据结构

引言 本节说明Pinctrl子系统中主要的数据结构,对这些数据结构有所了解,也就是对Pinctrl子系统有所了解了。 前面说过,要使用Pinctrl子系统,就需要去配置设备树。 以内核面向对象的思想,设备树可以分为两部分&#x…

Mint_21.3 drawing-area和goocanvas的FB笔记(五)

FreeBASIC SDL图形功能 SDL - Simple DirectMedia Layer 是完整的跨平台系统,有自己的窗口、直接捕获键盘、鼠标和游戏操纵杆的事件,直接操作音频和CDROM,在其surface上可使用gfx, openGL和direct3D绘图。Window3.0时代,各种应用…

Jenkins发送邮件、定时执行、持续部署

集成Allure报告只需要配置构建后操作即可。但如果是web自动化,或是用HTMLTestRunner生成报告,构建后操作要选择Publish HTML reports,而构建中还要添加Execute system Groovy script插件,内容: System.setProperty(&q…

如何快速分析OB集群日志,敏捷诊断工具obdiag分析能力实践——《OceanBase诊断系列》之四

1. 前言 obdiag是OceanBase的敏捷诊断工具。1.2版本中,obdiag支持快速收集诊断信息,但仅有收集能力是不够的,还需要有分析能力。因此在obdiag的1.3.0版本中,我们加入了OB集群的日志分析功能。用户可以一键进行集群的OB日志的分析…

运维知识点-Apache HTTP Server

Apache 介绍 介绍 Apache是一个开源的Web服务器软件,全称为Apache HTTP Server,由Apache软件基金会开发和维护。它是目前全球使用最广泛的Web服务器软件之一,占全球所有网络服务器的很大比例。Apache服务器具有跨平台的特性,可以…

软考高级:系统工程生命周期方法(计划驱动方法、渐进迭代式方法等)概念和例子

作者:明明如月学长, CSDN 博客专家,大厂高级 Java 工程师,《性能优化方法论》作者、《解锁大厂思维:剖析《阿里巴巴Java开发手册》》、《再学经典:《Effective Java》独家解析》专栏作者。 热门文章推荐&am…

【常见集合】Java 常见集合重点解析

Java 常见集合重点解析 1. 什么是算法时间复杂度? 时间复杂度表示了算法的 执行时间 和 数据规模 之间的增长关系; 什么是算法的空间复杂度? 表示了算法占用的额外 存储空间 与 数据规模 之间的增长关系; 常见的复杂度&#x…

防火墙配置实验

配置 配置IPSec FW1 FW3 NAT策略 FW1 FW3 安全策略 FW1 FW3 最后测试

数仓实战——京东数据指标体系的构建与实践

目录 一、如何理解指标体系 1.1 指标和指标体系的基本含义 1.2 指标和和标签的区别 1.3 指标体系在数据链路中的位置和作用 1.4 流量指标体系 1.5 指标体系如何向上支撑业务应用 1.6 指标体系背后的数据加工逻辑 二、如何搭建和应用指标体系 2.1 指标体系建设方法—OS…

分布式定时任务调度xxl-job

1. xxl-job基本介绍 1.1 Quartz的体系结构 Quartz中最重要的三个对象:Job(作业)、Trigger(触发器)、Scheduler(调度器)。 xxl-job的调度原理:调度线程在一个while循环中不断地获取一定数量的即将触发的Tr…

AIGC启示录:深度解析AIGC技术的现代性与系统性的奇幻旅程

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…

政安晨:【深度学习处理实践】(三)—— 处理时间序列的数据准备

在深度学习中,对时间序列的处理主要涉及到以下几个方面: 序列建模:深度学习可以用于对时间序列进行建模。常用的模型包括循环神经网络(Recurrent Neural Networks, RNN)和长短期记忆网络(Long Short-Term M…