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

投递消息到交换机:

 #include "SimpleAmqpClient/SimpleAmqpClient.h"
#include <iostream>
#include <string> int main() {
AmqpClient::Channel::ptr_t channel =
AmqpClient::Channel::Create("localhost"); //创建一个名为"fanout_logs"的交换器,类型为fanout。
std::string exchange_name = "fanout_logs";
channel->DeclareExchange(exchange_name,
AmqpClient::Channel::EXCHANGE_TYPE_FANOUT); // 这里不需要队列,生产者(投递方)不需要知道消息被投递到哪一个具体的队列,
// 只需要知道投递到哪一个交换机即可。
// 消息具体会被投递到哪个队列由交换机去处理。
// 实际上就是消费者所创建的队列只要绑定到此交换机就会收到该消息。
// 交换机会知道哪些队列绑定到了自己,他将消息投递给绑定到自己的所有队列。
#if 0
std::string queue_name = channel->DeclareQueue("", false, true, false, false);
//第一个参数为空,系统默认生成随机队列名称。 channel->BindQueue(queue_name, exchange_name, "");
//将队列与交换器绑定。
//这里routingKey的值为"",表示所有信息都会被发送。
#endif while () {
std::cout << "请输入要发送的信息:" << std::endl; std::string message;
std::getline(std::cin, message); channel->BasicPublish(exchange_name, "",
AmqpClient::BasicMessage::Create(message)); std::cout << "[x] send " << message << std::endl;
}
}

从交换 机获取消息

 #include "SimpleAmqpClient/SimpleAmqpClient.h"
#include <iostream> int main() {
AmqpClient::Channel::ptr_t channel = AmqpClient::Channel::Create("localhost"); std::string exchange_name = "fanout_logs";
//创建一个名为"fanout_logs"的交换器,类型为fanout。
channel->DeclareExchange(exchange_name,
AmqpClient::Channel::EXCHANGE_TYPE_FANOUT); //第三个参数表明队列是持久的(durable )。
std::string queue_name = "queue_fanout"
channel->DeclareQueue(queue_name, false, true, false, false); //将队列与交换器绑定。
// routingKey的值将被 fanout交换器忽略。
channel->BindQueue(queue_name, exchange_name, ""); //将第4个参数改为true,开启消息确认。
//将第5个参数改为false,取消独占队列。
// 如果同时多个消费者使用了这个队列,那么同一个消息只会随机发送到其中一个。
//最后一个同时不超过一个任务。(非平均分配)。
std::string consumer_tag =
channel->BasicConsume(queue_name, "", true, true, false, ); while () {
std::cout << "等待接收信息中" << std::endl; AmqpClient::Envelope::ptr_t envelope =
channel->BasicConsumeMessage(consumer_tag); std::string buffer = envelope->Message()->Body(); std::cout << "[y] receve " << buffer << std::endl;
} channel->BasicCancel(consumer_tag);
}

最新文章

  1. .NET Memory Profiler 查看内存使用情况
  2. Linux系统运行级别
  3. Swift 学习笔记第一天-变量常量,及数据类型
  4. js构建工具和预编译
  5. oracle 11g 分区表
  6. windws 安装jdk
  7. 怎样破解邮箱password
  8. L009-oldboy-mysql-dba-lesson09
  9. ffmpeg只使用h264编译参数
  10. Android 如何检测一个服务是否还在运行?
  11. idea中ajax中文乱码
  12. Python之路--你不知道的platform
  13. 多线程面试题系列(8):经典线程同步 信号量Semaphore
  14. 2000W条数据,加入全文检索的总结
  15. [转载] Tomcat架构分析
  16. 关于阿里ICON矢量图(SVG)上传问题.
  17. apache kylin2.10在原生hadoop集群上安装
  18. TortoiseGit推送代码到Gerrit的过程
  19. Java学习笔记31(IO:Properties类)
  20. 6--Python入门--Python基本运算符

热门文章

  1. 转:谈谈Linux下动态库查找路径的问题
  2. Python3.5-20190507-廖老师-自我笔记-迭代
  3. 关于使用html2canvas 绘制图片的坑
  4. ubuntu 搜狗输入法内存占用太多,卡顿不够处理办法
  5. maven eclipse远程部署tomcat
  6. 人生苦短_我用Python_str(字符串)_001
  7. Navicat连接MySQL8+时出现2059报错
  8. paper 135:关于C#泛型的知识点
  9. jmeter之-非GUI模式&amp;登录实战
  10. 安装纯净版debian!