关于 nameko 发布订阅模式下,message header 里面会出现 nameko.call_id_stack 的原因

3 月 14 日
阅读 1 分钟
84
headers: nameko.call_id_stack: parse_service.handle_parse_result.e03a8fd3-065b-46ee-93ad-5981c0076951persist_service.persist.9538901e-f8dd-4871-ac97-ead0eb7f25f2

rabbitmq 基础之 AMQP 0-9-1 协议解读

2023-10-08
阅读 1 分钟
292
先贴官方链接:AMQP 0-9-1 快速参考AMQP 0-9-1 完整参考指南操作 rabbitmq,支持 HTTP (15672 端口)和 AMQP 协议 (5672 端口)HTTP 没什么好讲的,因为这个是「管理接口」,不是正经的生产接口,要正经使用 rabbtimq, 用的都是 AMQP 协议,所以,我们需要对 AMQP 比较了解Rabbitmq 生产者消费者的数据流方向首先,我...

【源码探索】nameko 是如何实现协程并发消费的?

2023-07-07
阅读 4 分钟
669
使用 nameko 的时候,设置 max_workers 可以实现不同并发的消费我自己用 eventlet+kombu 写了一个消费者,却不能实现并发消费,只能一个一个排队消费代码如下: {代码...} 就很烦,怎么办,我就去翻了半天 nameko 的源码代码,发现问题在这里:site-packages/nameko/messaging.py 注册回调函数 {代码...} 然后 kombu 在...

为什么不推荐使用 nameko 的 rpc 模式?

2023-05-26
阅读 1 分钟
775
为什么不推荐使用 nameko 的 rpc 模式?因为 nameko 的 rpc 模式,一次通讯需要 30ms+,这可是在内网下!!太慢了,为什么这么慢?因为 amqp 协议的 rpc 需要:A 创建一个接受结果的 queueA 发请求 message 到 rabbitmq 的 rpc queue,然后 B 从 rpc queue 中获取请求 message然后 B 把结果 message 放到结果 queueA 再...

nameko+rabbitmq性能测试

2023-05-15
阅读 1 分钟
981
生产性能测试单并发性能测试开启消息确认,开启消息持久化,nameko 的投递速度是 250+关闭消息确认,开启消息持久化,nameko 的投递速度是 5k+关闭消息确认,关闭消息持久化,nameko 的投递速度是 7k+多并发极限测试消费性能测试

用 docker-compose 搭建一个 rabbitmq 集群

2023-05-07
阅读 3 分钟
1.9k
当您使用Docker Compose时,可以使用RabbitMQ的官方Docker镜像来构建RabbitMQ集群。下面是一个简单的docker-compose.yml文件示例,用于启动一个由3个RabbitMQ节点组成的集群:

分布式系统的心跳方向性?

2023-03-12
阅读 4 分钟
1k
A:在 Kafka 集群中,Kafka broker 会周期性地向 ZooKeeper 发送心跳请求,以表明自己仍然处于运行状态,并更新它在 ZooKeeper 上的元数据。同时,Kafka producer 和 consumer 也会向 broker 发送心跳请求,以确保它们与 broker 之间的连接保持活跃,同时告诉 broker 它们仍在运行。

rabbitmq 如何在 docker 下做数据持久化?

2023-02-28
阅读 1 分钟
946
rabbitmq+docker 数据持久化失效、失败、没有报错、重启之后没有数据了,怎么办?如何解决?rabbitmq 服务器重启之后,数据丢失、数据全部丢失,怎么办?如何解决?rabbitmq 没有设置 hostname 导致数据全部丢失,怎么办?如何解决?rabbitmq 重启之后,无法登录,用户名账号全部丢失,怎么办?如何解决?docker 部署 ra...

rabbitmq 重启之后无法登录

2023-02-17
阅读 2 分钟
1.6k
遇到一个问题一个 rabbitmq server 的内存不够了,加了内存之后重启重启后发现,账号登录不上了!吓死我研究了一下,原因如下:rabbitmq sever 依赖 hostname。机器上的 hostname 没有持久化,重启之后,hostname 变了先来说说第一个问题。rabbitmq server 的数据持久化存储在 /vobiledata/rabbitmq 目录下面:我的数据...

nameko 关闭消息确认和持久化

2022-11-11
阅读 5 分钟
1k
动机:最近使用 nameko + rabbitmq 做的系统的流量太低了,系统的 QPS 在 1k-2k 之间。所以需要优化系统的 QPS,自己用 kombu 裸写了生产者消费者的 demo 代码,即便开了消息持久化,发现吞吐量可以随随便便过 2w+/s(特指的是生产者投递消息的速率),所以一定有问题。

kombu 维护消费者心跳

2022-11-06
阅读 2 分钟
1.2k
单线程对于只有一个进程一个线程一个 amqp 连接的情况我们开了一个连接用来任务消费,这个时候,我们需要一个『后台』来帮我们维护 amqp 的心跳怎么实现这个『后台』呢?选择其实很多,比如:线程eventlet 协程gevent 协程下面就以 『eventlet 协程』 举例子了 {代码...}

rabbitmq 消费者为什么需要心跳

2022-11-06
阅读 1 分钟
784
rabbitmq 的心跳和 amqp 协议有关系,你要是用 rabbitmq 的 http 协议,就没有心跳的概念。所以我们谈论 rabbitmq 的心跳的时候,其实讲的是 amqp 的心跳。因为使用 rabbitmq 的时候, 99%

kombu 的 pools 中的 connections 到底在干嘛?

2022-10-16
阅读 2 分钟
1.1k
Connection and Producer Pools官方文档只能说写的很 low让我们自己从代码中发现原理吧 {代码...} 首先这玩意不是一个保险柜site-packages/kombu/pools.py {代码...} site-packages/kombu/pools.py {代码...} site-packages/kombu/pools.py {代码...} site-packages/kombu/utils/collections.py {代码...}

kombu 的惰性 connection ?

2022-10-16
阅读 2 分钟
995
kombu 这套东西,到底是在哪里建立 amqp 连接的 {代码...} 方法:人肉看代码,手动二分,加 wireshark 抓包在这里加了一个断言site-packages/kombu/transport/pyamqp.py {代码...}

kombu 创建优先队列并支持消息优先级

2022-10-14
阅读 1 分钟
1k
rabbitmq 里面,队列中的message是不分优先级的,只会先进先出,哪怕是 publish 的时候,给 message 带上 priority 也是一个摆设

kombu 如何判断一个 message 是否 acknowledged/requeued/rejected

2022-10-10
阅读 1 分钟
1k
直接使用 message 的 acknowledged 属性就好了 {代码...} 当我们使用 acknowledged 的时候,其实干的是下面的事情:kombu/message.py {代码...} ACK_STATES 是什么呢?kombu/message.py {代码...} 可以看到,已经有三个状态了哦

rabbitmq docker 修改默认配置

2022-10-08
阅读 2 分钟
2.3k
conf 和 config 不可以乱用,因为代表的是不同格式,不然会报错误, 比如把 rabbitmq.conf 命名为 rabbitmq.config 是不可取的:Failed to load advanced configuration file "/etc/rabbitmq/rabbitmq.config": unknown POSIX error

kombu register_callback 和 on_message 的区别?

2022-10-08
阅读 2 分钟
942
register_callback 添加的 func 接受两个参数 {代码...} register_callback 添加的 func 接受一个参数 {代码...} 相关的代码可见:kombu/messaging.py {代码...} 从上面可以看出,如果你需要 kombu 帮你做 decode,那可以选择 register_callback; 但是让 kombu 做 decode 有一个坏处,就是 decode 失败了,没有办法把 me...

论 rabbitmq+nameko 可以支撑多大规模的业务

2022-10-07
阅读 1 分钟
788
来谈谈 rabbitmq+nameko 的技术选型 —— 什么场景下可以选用 『rabbitmq+nameko』,将从优缺点两个层面分析。主要以缺点为主

rabbitmq amqp 协议 Properties 和 headers 的区别?

2022-09-25
阅读 1 分钟
606
刚刚去谷歌 search 了一下『rabbitmq Properties 和 headers 的区别』,出来的结果没有靠谱的,那就自己写一个吧

kombu 的 serializer 选择 json 和 yaml 有什么区别?

2022-09-02
阅读 4 分钟
1.5k
前言kombu 投递 message 的时候,支持多种序列化方式:jsonyamlpickle今天的主题就是,看看一个 dict 分别被这三种序列化方式序列化后,message 会长成什么样子(以 rabbitmq 管理界面的样子为准)实验先准备一个 dict ,value 的 type 有 str、int、datetime、sub dict 等多种类型 {代码...} 我们先来看看不指定 serializ...

nameko 投递不同大小消息的速率对比

2022-08-05
阅读 2 分钟
696
可以先阅读:nameko 投递信息不持久化小体积投递 1000 bytes 的 message(不开持久化 NON_PERSISTENT)速率在 2000+投递 1000 bytes 的 message(开持久化 PERSISTENT)速率在 200-中等体积投递 100 KB 的 message(不开持久化 NON_PERSISTENT)速率在 1500 左右投递 100 KB 的 message(开持久化 PERSISTENT)速率在 12...

nameko 投递信息不持久化

2022-08-05
阅读 4 分钟
1.1k
nameko 投递的 message 是默认打开持久化的。但是 rabbitmq 对持久化信息的吞吐量堪忧,有的时候,需要非持久化信息来提速。将 delivery_mode=NON_PERSISTENT 设为 0 就好了(NON_PERSISTENT 就是 0) {代码...} message 不持久化,push 速率就可以到 2.5k/s上图是我在 macbook 上通过 wifi push 到服务器的,延迟如下:...

tshark 抓包 rabbitmq 协议包

2022-03-08
阅读 4 分钟
1.1k
tshark 抓包 rabbitmq 协议包输入 tshark -Y amqp 就可以了 {代码...}

Kafka 和 AMQP 有关系吗?

2022-01-11
阅读 1 分钟
2.9k
无关!AMQP 是 RabbitMQ 的东西,和 kafka 无关。参考文章:RabbitMq和kafka的区别

nameko 和 rabbitmq 的运行原理全解析

2022-01-02
阅读 1 分钟
1.2k
通过 wireshark 抓包可以看到生产消费的流程是:

docker + rabbitmq 配置教程

2022-01-01
阅读 1 分钟
2.2k
最简单的 rabbitmq:3 {代码...} 这个方式,没带管理界面,不能通过 15672 端口访问后台管理界面Q:rabbitmq 的默认账号密码是什么?A:rabbitmq 的默认账号密码都是: guest带管理界面的 rabbitmq运行 rabbitmq:3-management {代码...} 也可以用下面的命令指定默认的账号密码: {代码...} 参考文章: Downloading and Insta...