原生 Java 客户端进行消息通信
原生 Java 客户端进行消息通信
Direct 交换器
DirectProducer:direct类型交换器的生产者
NormalConsumer:普通的消费者
MulitBindConsumer:队列绑定到交换器上时,是允许绑定多个路由键的,也就是多重绑定MulitChannelConsumer:一个连接下允许有多个信道
MulitConsumerOneQueue:一个队列多个消费者,则会表现出消息在消费者之间的轮询发送。
生产者和消费者一般用法
DirectProducer:direct类型交换器的生产者
NormalConsumer:普通的消费者
使用 DirectProducer作为生产者,NormalConsumer作为消费者,消费者绑定一个队列
队列和交换器的多重绑定
DirectProducer:direct类型交换器的生产者
NormalConsumer:普通的消费者
MultiBindConsumer:队列绑定到交换器上时,是允许绑定多个路由键的,也就是多重绑定对比:单个绑定的消费者只能收到指定的消息,多重绑定的的消费者可以收到所有的消息。
一个连接多个信道
DirectProducer:direct类型交换器的生产者
MultiChannelConsumer:一个连接下允许有多个信道
一个连接,我们可以使用多线程的方式模拟多个信道进行通讯。这样可以做到多路复用。
一个队列多个消费者
MultiConsumerOneQueue:一个队列多个消费者,则会表现出消息在消费者之间的轮询发送。
Fanout
消息广播到绑定的队列
不管我们如何调整生产者和消费者的路由键,都对消息的接受没有影响。
Topic
通过使用“*”和“#”,使来自不同源头的消息到达同一个队列,”.”将路由键分为了几个标识符,“*”匹配 1个,“#”匹配一个或多个。例子如
假设有交换器 topic_course,
讲课老师有 king,mark,james,
技术专题有 kafka,jvm,redis,
课程章节有 A、B、C,
路由键的规则为 讲课老师+“.”+技术专题+“.”+课程章节,如:king.kafka.A。
*与#的区别:
如果我们发送的路由键变成 king.kafka.A
那么队列中如果绑定了 king.* 不能匹配
队列中如果绑定了 king.# 能够匹配
1、要关注所有的课程,怎么做?
声明一个队列并绑定到交换器上:channel.queueBind(queueName,TopicProducer.EXCHANGE_NAME, "#");
2、关注 king 老师的所有课程,怎么办?
声明一个队列并绑定到交换器上:channel.queueBind(queueName,TopicProducer.EXCHANGE_NAME, "king.#");
注意:如果这里改为 king.* 的话,则不会出现任何信息,因为 “*”匹配 1个(使用.分割的标识的个数)
3、关注 king 老师所有的 A 章节,怎么办?
声明一个队列并绑定到交换器上:channel.queueBind(queueName,TopicProducer.EXCHANGE_NAME, "king.#.A");
或者声明一个队列并绑定到交换器上:channel.queueBind(queueName,TopicProducer.EXCHANGE_NAME, "king.*.A");
4、关注 kafka 所有的课程,怎么办?
声明一个队列并绑定到交换器上:channel.queueBind(queueName,TopicProducer.EXCHANGE_NAME, "#.kafka.#");
5、关注所有的 B 章节,怎么办?
声明一个队列并绑定到交换器上:channel.queueBind(queueName,TopicProducer.EXCHANGE_NAME, "#.B");
6、关注 king 老师 kafka 的 A 章节,怎么办?
声明一个队列并绑定到交换器上:channel.queueBind(queueName,TopicProducer.EXCHANGE_NAME, "king.kafka.A");
最新文章
- 使用winmm.dll 获取麦克风声音数据
- 记一次Linux服务器上查杀木马经历
- js中列表控件排序箭头,在wke中不支持的解决办法
- dev中控件属性设置
- 详细说说 Google Test Certified 的各级——Level 2,3
- 《自制编程语言》笔记:使用yacc与lex制作简单计算器
- 【转】Swift开源项目精选
- .NET 配置文件简单使用
- SoundCloud 的开发功能
- 将OutLook.exe注册为服务,让其一直保持开启状态
- Qt 学习之路:QML 基本元素
- Kdd Cup 2013 总结2
- Hadoop技术在商业智能BI中的应用
- James Munkres Topology: Theorem 16.3
- BaseDao优化
- php学习----基本介绍及数据类型
- [leetcode]Unique Paths II @ Python
- 读书笔记 C#委托的BeginInvoke、EndInvoke之浅析
- Unity 官方教程 学习
- pstStream->;pstPack[i].pu8Addr详解
热门文章
- MyBatisPlus配置日志,CRUD的使用
- 牛客 51011 可达性统计(拓扑排序,bitset)
- LibSvm流程及java代码测试
- C#LeetCode刷题之#485-最大连续1的个数(Max Consecutive Ones)
- C#LeetCode刷题之#665-非递减数列( Non-decreasing Array)
- Java程序员面试必备:Volatile全方位解析
- 同步博客到cnblogs平台
- 浏览器自动化的一些体会8 HttpWebRequest的几个问题
- python基础 - 切片
- Android 在代码中修改TextView的DrawableRight等方向上的图片