fanout交换器重点内容非常简单。
它只会将接收到的所有消息广播发送到它所知道的所有队列。

投递消息到交换机:

 1 #include "SimpleAmqpClient/SimpleAmqpClient.h"
 2 #include <iostream>
 3 #include <string>
 4
 5 int main() {
 6   AmqpClient::Channel::ptr_t channel =
 7       AmqpClient::Channel::Create("localhost");
 8
 9   //创建一个名为"fanout_logs"的交换器,类型为fanout。
10   std::string exchange_name = "fanout_logs";
11   channel->DeclareExchange(exchange_name,
12                            AmqpClient::Channel::EXCHANGE_TYPE_FANOUT);
13
14 // 这里不需要队列,生产者(投递方)不需要知道消息被投递到哪一个具体的队列,
15 // 只需要知道投递到哪一个交换机即可。
16 // 消息具体会被投递到哪个队列由交换机去处理。
17 // 实际上就是消费者所创建的队列只要绑定到此交换机就会收到该消息。
18 // 交换机会知道哪些队列绑定到了自己,他将消息投递给绑定到自己的所有队列。
19 #if 0
20   std::string queue_name = channel->DeclareQueue("", false, true, false, false);
21   //第一个参数为空,系统默认生成随机队列名称。
22
23   channel->BindQueue(queue_name, exchange_name, "");
24   //将队列与交换器绑定。
25   //这里routingKey的值为"",表示所有信息都会被发送。
26 #endif
27
28   while (1) {
29     std::cout << "请输入要发送的信息:" << std::endl;
30
31     std::string message;
32     std::getline(std::cin, message);
33
34     channel->BasicPublish(exchange_name, "",
35                           AmqpClient::BasicMessage::Create(message));
36
37     std::cout << "[x] send " << message << std::endl;
38   }
39 }

从交换 机获取消息

 1 #include "SimpleAmqpClient/SimpleAmqpClient.h"
 2 #include <iostream>
 3
 4 int main() {
 5   AmqpClient::Channel::ptr_t channel = AmqpClient::Channel::Create("localhost");
 6
 7   std::string exchange_name = "fanout_logs";
 8     //创建一个名为"fanout_logs"的交换器,类型为fanout。
 9 channel->DeclareExchange(exchange_name,
10                            AmqpClient::Channel::EXCHANGE_TYPE_FANOUT);
11
12   //第三个参数表明队列是持久的(durable )。
13   std::string queue_name = "queue_fanout"
14   channel->DeclareQueue(queue_name, false, true, false, false);
15
16   //将队列与交换器绑定。
17   // routingKey的值将被 fanout交换器忽略。
18   channel->BindQueue(queue_name, exchange_name, "");
19
20   //将第4个参数改为true,开启消息确认。
21   //将第5个参数改为false,取消独占队列。
22   // 如果同时多个消费者使用了这个队列,那么同一个消息只会随机发送到其中一个。
23   //最后一个同时不超过一个任务。(非平均分配)。
24   std::string consumer_tag =
25       channel->BasicConsume(queue_name, "", true, true, false, 1);
26
27   while (1) {
28     std::cout << "等待接收信息中" << std::endl;
29
30     AmqpClient::Envelope::ptr_t envelope =
31         channel->BasicConsumeMessage(consumer_tag);
32
33     std::string buffer = envelope->Message()->Body();
34
35     std::cout << "[y] receve " << buffer << std::endl;
36   }
37
38   channel->BasicCancel(consumer_tag);
39 }

转载于:https://www.cnblogs.com/suyunhong/p/8990739.html

rabbitmq AmqpClient 使用Fanout 交换机投递与接收消息,C++代码示例相关推荐

  1. Android Java使用JavaMail API发送和接收邮件的代码示例

    JavaMail是Oracle甲骨文开发的Java邮件类API,支持多种邮件协议,这里我们就来看一下Java使用JavaMail API发送和接收邮件的代码示例 使用Javamail发送邮件,必需的j ...

  2. PC微信逆向:发送与接收消息的分析与代码实现

    文章目录 定位微信的消息接收函数 定位消息接收函数的相关思路 定位消息内容的地址 分析接收消息函数 好友消息 群消息 总结 代码实现 定位微信的消息发送函数 定位消息发送函数的相关思路 过滤当前聊天窗 ...

  3. RabbitMQ——使用Exchange中的fanout交换机实现消息发送和接收

    文章目录: 1.写在前面 2.使用fanout交换机实现消息的发送和接收 2.1 编写消息接收类(有两个) 2.2 编写消息发送类 1.写在前面 所有 MQ 产品从模型抽象上来说都是一样的过程: 消费 ...

  4. #rabbitMQ #重复消费 #可靠投递 #延时投递 #rabbitMQ交换机类型#重复消费#消息积压#消息丢失

    exchange类型: 1, direct 指定direct后, 消息会根据你设置的routeing key(路由键), 发送到对应的队列中 1,新建direct交换机 2,添加队列, 并且绑定路由键 ...

  5. RabbitMq——扇出(fanout)交换机

    扇出(fanout)交换机是将接收到到消息广播给它知道的所有队列,从而实现生产者发送一条消息,可以供多个消费者消费. 案例:一个生产者发送一条消息,通过扇出交换机,广播给两个消费者消费,如下图:  1 ...

  6. RabbitMQ中Fanout交换机的使用

    交换机的基本原理 案例 由于Fanout类型的交换机原理类似于广播的模式,所以需要先启动消息的消费者以避免消息的丢失. 接受方: 消费者1: public class Reseive {public ...

  7. RabbitMQ(四)交换机exchange

    5.1 exchanges 5.1.1 概念 RabbitMQ 消息传递模型的核心思想是: 生产者生产的消息从不会直接发送到队列.实际上,通常生产者甚至都不知道这些消息传递传递到了哪些队列中. 相反, ...

  8. python send 案例_python使用rabbitmq实例三,交换机

    上面一篇是说到了工作队列,每次消息都只会发送给其中一个接收端,如果需要将消息广播出去,让每个接收端都能收到,那么就要使用交换机. 交换机的工作原理:消息发送端先将消息发送给交换机,交换机再将消息发送到 ...

  9. RabbitMQ的四种交换机模式

    一.RabbitMQ的简单介绍 RabbitMQ作为一个消息队列,它负责提供一个通用的消息发送和接收平台,并且保证消息在传输过程中的安全可靠. 消息(Message)由Client(客户端)发送,Ra ...

最新文章

  1. Connot resolve Symbol '.......'
  2. bzoj 2190: [SDOI2008]仪仗队 线性欧拉函数
  3. 一步步实现:springbean的生命周期测试代码
  4. 腾讯QQ空间g_tk算法
  5. 内核同步 (来自chinaunix总结)
  6. sed: sed command a expects followed by text
  7. 2018.11.04 洛谷P1081 开车旅行(倍增)
  8. 详解vue动画的封装
  9. 【java笔记】java基本语言风格(注释,数据,运算符)
  10. ins与apache的区别_既然nginx比apache快,为什么nginx没有取代apache?
  11. Docker是什么,有什么用?一看就明白
  12. SQL on HBase -- phoenix 之分页查询
  13. 当前的开源SLAM方案
  14. R语言:商业数据分析实例(4)【总结篇,回归】
  15. php 导出excel 设置列宽,php – 导出Excel文件时调整列宽
  16. qq发的html文件打不开,Win10系统下QQ能上网页却无法打开的三种解决方案
  17. 《大秦帝国三:崛起》 剧情简介和最新进展
  18. jquery和JavaScript之间的联系和区别
  19. SCAU华南农业大学-数电实验-用74LS283实现2*4乘法器
  20. chmod 命令详细用法

热门文章

  1. java stream flatmap
  2. gitlab releases
  3. D3 transtion
  4. 编程通用知识 系统编程
  5. 图解TCPIP-MAC地址(数据链路层)
  6. TensorFlow YOLO3
  7. 2.14 向量化 logistic 回归的梯度输出
  8. Pandas 文本数据方法 contains()
  9. mysql安全实验测验答案_实验四∶数据库安全性实验报告.doc
  10. java发送post请求json格式_Linux QT 4G发送HTTP POST请求发送JSON格式的数据