RabbitMq
guotianqing
这个作者很懒,什么都没留下…
展开
-
RabbitMq使用小结及及避坑建议
使用了一段时间RabbitMq作为消息中间件,遇到一些问题,作一小结。但仍有疏漏和不足,请读者朋友指出。1. channel不是线程安全的,某些客户端库的connection也可能非线程安全这一点应该不必多说,RabbitMq本身的connection是线程安全的,但channel非线程安全。不要尝试在多线程中使用同一个channel,这样几乎不可避免地会发生channel error的问题...原创 2020-03-14 21:05:22 · 3123 阅读 · 0 评论 -
AMQP-CPP在Windows下的使用及网络层Boost Asio实现
背景AMQP-CPP 是c++连接RabbitMq的客户端库,它完全异步,需要c11的支持。关于 AMQP-CPP 的基础使用,请参考 c++使用amqp-cpp库连接RabbitMq 。源码下载请稳步github: AMQP-CPP 。AMQP-CPP采用分层的架构,网络层与AMQP协议层分离,而仓库中只提供了Linux下的TCP模块,所以在Windows上使用时,需要自行实现网络层I...原创 2020-01-06 18:47:12 · 3402 阅读 · 4 评论 -
c++使用amqp-cpp库连接RabbitMq
AMQP-CPP简介c++连接RabbitMq的库目前不多,很多朋友直接使用Rabbitmq-c封闭了类,供c++使用,也是一种方法。经过选型和使用,我在项目中使用了AMQP-CPP,本文主要介绍AMQP-CPP库的使用。AMQP-CPP是用于与RabbitMq消息中间件通信的c++库。它能解析从RabbitMq服务发送来的数据,也可以生成发向RabbitMq的数据包。该库使用分层架...原创 2020-01-03 18:41:40 · 13642 阅读 · 1 评论 -
RabbitMq基础概念术语详解
本文以Q&A的方式对RabbitMq使用时的基本情况进行说明。为了保持概念一致性,RabbitMq相关术语仍使用英文。connection是什么,与TCP连接有什么关系?[x] connection代表着一条真实的TCP连接,即物理连接,具有ip和port[x] 该连接与RabbitMq服务器相连,大部分场景下设计时采用长连接[x] 可以配置心跳来检测连接状态[x] co...原创 2019-10-31 10:21:35 · 789 阅读 · 0 评论 -
RabbitMq实现模糊匹配(topic)
场景使用direct能够实现消息的精确匹配,但有时候需要更加灵活的匹配规则。使用topic可以实现模糊匹配。生产者以一定的规则指定routing_key,如 a.b.c各个消费者使用自己关心的规则匹配需要的消息,如消费者使用a.c.d,.a.,a.#.#等示意图如下:生产者代码:# -*- coding: utf-8 -*-import sysimport pika...原创 2019-10-29 17:36:55 · 3940 阅读 · 0 评论 -
RabbitMq实现消息路由(direct)
场景在pub/sub模式中,我们实现了日志消息的广播分发。在该例程中,我们对日志消息做一个路由,从而消费者可以只接收到指定的消息。生产者生产带有标识的消息消费者根据需求只接收到过滤后的消息Exchange自动路由消息示意图如下:生产者代码:# -*- coding: utf-8 -*-import sysimport pikaconnection = pika.B...原创 2019-10-29 17:12:38 · 495 阅读 · 0 评论 -
RabbitMq实现发布订阅(publish/subscribe)
场景一个生产者和多个消费者生产的消息会同时发送到所有的消费者(广播)示意图如下:在下面的例程中,生产者发送日志数据给所有的消费者,所有的消费者均接收到所有的日志消息。生产者代码如下:# -*- coding: utf-8 -*-import sysimport pikaconnection = pika.BlockingConnection(pika.Connect...原创 2019-10-29 16:42:09 · 1489 阅读 · 1 评论 -
RabbitMq实现任务分发work queues
适用场景一个生产者和多个消费者生产者产生任务,按照一定规则分发给消费者:轮询和公平分发场景如下:这里使用模拟消费的方式,消费者接收到消息后会休眠一定的时间,以表示正在处理当前的任务。生产者先上代码:# -*- coding: utf-8 -*-import sysimport pikaconnection = pika.BlockingConnection(pika...原创 2019-10-29 15:15:39 · 318 阅读 · 0 评论 -
RabbitMQ实现Hello World
准备具有Python环境能够连接到RabbitMq服务,并具有相应权限使用 Pika Python Client。安装:python -m pip install pika --upgrade实现2个应用程序:生产者发送Hello World消费者接收并输出到屏幕通读该程序可以更加深入的理解RabbitMq的术语和使用流程。关于基本知识,请参考RabbitMq入门简介。生...原创 2019-10-28 08:47:01 · 203 阅读 · 0 评论