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. mysql基于GTIDS复制

    GTIDS的环境:一台master 192.168.200.111多个slave: 192.168.200.112 192.168.200.113 修改master服务器:[root@localhos ...

  2. 转载:tomcat性能的优化

    考虑一下这种场景,你开发了一个应用,它有十分 优秀的布局设计,最新的特性以及其它的优秀特点.但是在性能这方面欠缺,不管这个应用如何都会遭到客户拒绝.客户总是期望它们的应用应该有更好的性能.如 果你在产 ...

  3. windows下基于(QPC)实现的微秒级延时

    1.为什么会写windows下微秒级延时 在上一篇 实现memcpy()函数及过程总结 中测试memcpy的效率中,测试时间的拷贝效率在微秒级别,需要使用微秒级时间间隔计数. windows下提供Qu ...

  4. 第8篇NFS PersistentVolume

    一.部署nfs服务端: k8s-master 节点上搭建了 NFS 服务器,也可以在部署节点搭建,原理一样 (1)安装nfs服务: yum install -y nfs-utils rpcbind v ...

  5. word--->pdf资料转载..

    https://blog.csdn.net/dsn727455218/article/details/80667927

  6. java 调用wsdl的webservice接口 两种调用方式

    关于wsdl接口对于我来说是比较头疼的 基本没搞过.一脸懵 就在网上搜 看着写的都很好到我这就不好使了,非常蓝瘦.谨以此随笔纪念我这半个月踩过的坑... 背景:短短两周除了普通开发外我就接到了两个we ...

  7. redis相关笔记(二.集群配置及使用)

    redis笔记一 redis笔记二 redis笔记三 1.配置:在原redis-sentinel文件夹中添加{8337,8338,8339,8340}文件夹,且复制原8333中的配置 在上述8333配 ...

  8. Struts2增删改查(自己思路理解)

    1:查询所有: DAO层:把所有的信息都放到list集合中.然后返回. public List<Employee> getEmployees(){ return new ArrayList ...

  9. Linux v4l2编程(摄像头信息采集)

    基于Linux3.4.2,自己做一点儿视频信息采集及网络传输的小实验,边做边学,一些基础知识同步整理..... 1. 定义 V4L2(Video For Linux Two) 是内核提供给应用程序访问 ...

  10. 2019ccpc网络赛hdu6705 path

    path 题目传送门 解题思路 先用vector存图,然后将每个vector按照边的权值从小到大排序.将每个顶点作为起点的边里最短的边存入优先队列.对于存入优先队列的信息,应有边起点,终点,是其起点的 ...