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);
}

rabbitmq AmqpClient 使用Fanout 交换机投递与接收消息,C++代码示例的更多相关文章

  1. rabbitmq AmqpClient 使用Topic 交换机投递与接收消息,C++代码示例

    // strUri = "amqp://guest:guest@192.168.30.11:8820/test" // strUri = "amqp://[帐户名]:[密 ...

  2. rabbitmq AmqpClient 使用Direct 交换机投递与接收消息,C++代码示例

    // 以DIRECT 交换机和ROUTING_KEY的方式进行消息的发布与订阅 // send // strUri = "amqp://guest:guest@192.168.30.11:8 ...

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

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

  4. rabbitmq direct、fanout、topic 三种Exchange java 代码比较

    Producer端 1.channel的创建 无论是才用什么样的Exchange,创建channel代码都是相同的,如下 ConnectionFactory factory = new Connect ...

  5. rabbitmq AmqpClient 使用Topic 交换机同一个channel 同时多个队列 ,多个交换机,C++代码示例

    // 消息发送 bool PublishExchangeTopicMulti(const std::string &strUri) { AmqpClient::Channel::ptr_t c ...

  6. KeyBord事件分发和接收简要过程代码示例

    step1:调用ViewRootImpl的内部类ImeInputStage的成员函数onProcess来判断输入法是否处于激活状态 final class ImeInputStage extends ...

  7. RabbitMQ广播:fanout模式

    一. 消息的广播需要exchange:exchange是一个转发器,其实把消息发给RabbitMQ里的exchange fanout: 所有bind到此exchange的queue都可以接收消息,广播 ...

  8. python中RabbitMQ的使用(交换机,广播形式)

    简介 如果要让每个接收端都能收到消息,此时需要将消息广播出去,需要使用交换机. 工作原理 消息发送端先将消息发送给交换机,交换机再将消息发送到绑定的消息队列,而后每个接收端都能从各自的消息队列里接收到 ...

  9. rabbitmq不同模式的交换机使用

    交换机的功能主要是接收消息并且转发到绑定的队列,交换机不存储消息,在启用ack模式后,交换机找不到队列会返回错误.交换机有四种类型:Direct, topic, Headers and Fanout( ...

随机推荐

  1. 59th python下graphviz安装 砖

    原文 摘录  感谢分享:   https://www.cnblogs.com/liusx0303/p/9155305.html 参考链接:https://blog.csdn.net/u01325041 ...

  2. Windows下Tomcat安装 + eclipse-Server配置

    一.Tomcat安装 1.安装 解压安装包到自己的电脑上,建议不要解压到中文目录下 2.配置 网上有些安装教程提到需要配置CATALINA_HOME环境变量,此变量指向了tomcat 的目录,主要是为 ...

  3. 【leetcode】976. Largest Perimeter Triangle

    题目如下: Given an array A of positive lengths, return the largest perimeter of a triangle with non-zero ...

  4. Java 设计模式-【单例模式】

    单例解决了什么问题:为了节约系统资源,有时需要确保系统中某个类只有唯一一个实例,当这个唯一实例创建成功之后,我们无法再创建一个同类型的其他对象,所有的操作都只能基于这个唯一实例.为了确保对象的唯一性, ...

  5. bzoj 2013

    http://www.lydsy.com/JudgeOnline/problem.php?id=2013 最初看这个题的时候,以为神题不可做,然后去找yzjc..然后做法过于简单了(' '       ...

  6. CDN技术之--流媒体CDN系统的组成

    流媒体业务是一种对实时性.连续性.时序性要求非常高的业务,无论从带宽消耗上还是质量保障上来说,对best-effort的IP网络都是一个不小的冲击 –高带宽要求–高QoS要求–组播.广播要求(目前IP ...

  7. BZOJ 3569: DZY Loves Chinese II(线性基)

    传送门 解题思路 首先构造出一个生成树,考虑不连接的情况.假设连通两点的非树边和树边都断掉后不连通,那么可以给所有的非树边随机一个互不相同的值,然后树边的权值为过他两端点的非树边权值的异或和,这个可以 ...

  8. 在pycharm中切换python版本的方法

    转载自:https://blog.csdn.net/sgfmby1994/article/details/77876873 目前,python2和python3都有很重要的意义,所以,我们经常会在电脑 ...

  9. Tomcat负载均衡、调优核心应用进阶学习笔记(二):Tomcat前世今生、安装、配置文件详细说明、tomcat应用程序部署、webapp 体系结构、tomcat运行方式

    文章目录 Tomcat前世今生 安装 配置文件详细说明 tomcat应用程序部署 webapp 体系结构 tomcat运行方式 Tomcat前世今生 java体系: 1 java程序设计语言 2 ja ...

  10. bootstrap Grid布局(网格布局)

    基本网络结构 <div class="container"> <div class="row"> <div class=" ...