原生 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");

java消息通信_原生 Java 客户端进行消息通信相关推荐

  1. java 读取mysql数据库_原生Java操作mysql数据库过程解析

    这篇文章主要介绍了原生Java操作mysql数据库过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.引入数据库驱动的jar包 以通过mav ...

  2. java udp 缓冲区_为什么特定的UDP消息总是低于特定的缓冲区大小?

    3个不同的消息以不同的速率发送到同一个端口: 消息大小(字节)每个传输速度发送 High23210 ms100Hz Medium14820ms50Hz 低2060 ms16.6Hz 我每 ~ 6 ms ...

  3. 纯java分布式内存数据库_最新Java岗面试清单:分布式+Dubbo+线程+Redis+数据库+JVM+并发...

    最近可能有点闲的慌,没事就去找面试面经,整理了一波面试题.我大概是分成了Java基础.中级.高级,分布式,Spring架构,多线程,网络,MySQL,Redis缓存,JVM相关,调优,设计模式,算法与 ...

  4. java ws协议_基于java实现websocket协议过程详解

    最近了解了下websocket和socket这个东西,说不得不来说下为何要使用 WebSocket ,和为何不用http. 为何需要WebSocket ? HTTP 协议是一种无状态的.无连接的.单向 ...

  5. java初学课程_作为java新手应该学习什么课程

    照目前IT行业发展趋势,学java的人越来越多,因为java的应用范围广,薪资待遇在IT行业里也是名列前茅,那么,作为java新手应该学习什么课程呢?动力节点java学院的小编来告诉大家新手应该学哪些 ...

  6. java web源代码_检测Java Web应用程序而无需修改其源代码

    java web源代码 与其他系统进行交互时,大多数Java Web应用程序都使用标准Java接口. 诸如Web页面或REST服务器之类的基于HTTP的服务是使用接口javax.servlet.Ser ...

  7. java queue使用_使用Java使用Amazon Simple Queue Service

    java queue使用 Amazon Simple Queue Service或SQS是Amazon Webservice堆栈提供的高度可扩展的托管消息队列. Amazon SQS可用于完全解耦系统 ...

  8. 五子棋java设计引言_基于JAVA的五子棋游戏系统设计与实现报告.doc

    PAGE \* MERGEFORMAT PAGE \* MERGEFORMAT I 基于JAVA的五子棋游戏系统设计与实现 专 业 电子信息工程 学 生 董永杰 指导教师 曾玉 摘要 PAGE \* ...

  9. java array缓存_有java数组

    [JAVA零基础入门系列]Day10 Java中的数组 [JAVA零基础入门系列](已完结)导航目录 Day1 开发环境搭建 Day2 Java集成开发环境IDEA Day3 Java基本数据类型 D ...

最新文章

  1. 用一个创业故事串起操作系统原理(四)
  2. 下一站:AlphaDrug?
  3. 民营企业SAP项目客户的几种心态
  4. 2021年春季学期-信号与系统-第二次作业参考答案-第十小题
  5. 如何在Author中加载SDE栅格图层?
  6. 支付宝支付 第六集:生成支付二维码
  7. Web前端学习-第三课JavaScript篇
  8. 【技术原创】MailEnable开发指南
  9. [蓝桥杯2020国赛]游园安排
  10. Sharepoint学习笔记 –架构系列—10 Sharepoint的服务器端对象模型(Server Object Model) 2.内容层次结构
  11. 获取电脑系统当前时间
  12. git 入门操作指令
  13. 【matlab】三维曲面(矩形网格---meshgrid)
  14. 用Python做一个无限弹窗
  15. linux 7.4ip配置,新手进阶 Ubuntu7.10中配置IP地址
  16. 【BP数据预测】基于matlab蝙蝠算法优化BP神经网络数据预测【含Matlab源码 1379期】
  17. ffmpeg录制音频 命令行与C++实现
  18. Windows系统蓝屏机制
  19. Visual C++开发类似QQ游戏大厅全过程
  20. 高斯定理的证明(三重积分的C/C++实现)(C++)(大学物理)

热门文章

  1. 字典的最大深度 python 实现
  2. 成语json_cocos creator实战(2)成语小秀才ts版
  3. 向前欧拉公式 matlab_你可能不知道的MATLAB操作#第三话
  4. Leetcode 83 删除排序链表中的重复元素 (每日一题 20210804)
  5. NLP-基础知识-006(机器学习)
  6. python库整理:networkx 包
  7. 初始化QChart极坐标图(含曲线、散点)
  8. 【极客blog图文讲解】Jekyll教程(针对mac linux)
  9. 政策定价风控审批策略
  10. Build Docker image of a Python Flask app【转载】