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

转载于:https://www.cnblogs.com/Soy-technology/p/11570215.html

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

  1. java消息通信_原生 Java 客户端进行消息通信

    原生 Java 客户端进行消息通信 Direct 交换器 DirectProducer:direct类型交换器的生产者 NormalConsumer:普通的消费者 MulitBindConsumer: ...

  2. java客户端发消息到kafka

    前言 下面记录下如何使用kafka的java客户端向kafka的broker发送消息 1.导入maven依赖 <dependency><groupId>org.apache.k ...

  3. ZooKeeper原生java客户端使用

    2019独角兽企业重金招聘Python工程师标准>>> 准备: 要么使用maven,要么手动引入zookeeper-3.4.6.jar和zk包lib文件夹下的jar包,slf4j-a ...

  4. java esclient query_elasticsearch 口水篇(4)java客户端 - 原生esClient

    上一篇(elasticsearch 口水篇(3)java客户端 - Jest)Jest是第三方客户端,基于REST Api进行调用(httpClient),本篇简单介绍下elasticsearch原生 ...

  5. java socket5源码_Java利用TCP协议实现客户端与服务器通信【附通信源码】

    进行TCP协议网络程序的编写,关键在于ServerSocket套接字的熟练使用,TCP通信中所有的信息传输都是依托ServerSocket类的输入输出流进行的. TCP协议概念 先来了解一下TCP协议 ...

  6. Java的TCP/UDP网络编程+多线程实现服务器端与客户端间的通信

    写在前面: Java为网络编程提供了丰富的库,我们能通过调用Socket套接字的方法实现服务器与客户端的双通信. 注意点: 需要注意的是端口的对应,端口可以理解为窗户,服务器只能通过某个端口(窗户)与 ...

  7. java socket通信 客户端_JavaのSocket编程之简单客户端与服务器端通信

    Socket编程之简单客户端与服务器端通信 socket 通常用来实现客户端和服务端的连接,socket 是Tcp/Ip协议的一个十分流行的编程界面,一个socket 由一个Ip地址和一个端口号唯一确 ...

  8. 全网疯传!Java利用TCP协议实现客户端与服务器通信【附通信源码

    目录 TCP协议概念 ServerSocket类 服务器端程序 客户端程序 Hello!大家好哇!我是灰小猿! 上一篇博客和大家分享了在网络编程中要注意的基础知识,关于IP.TCP.UDP以及端口和套 ...

  9. kafka Java客户端之 consumer API 消费消息

    背景:我使用docker-compose 搭建的kafka服务 kafka的简单介绍以及docker-compose部署单主机Kafka集群 使用consumer API消费指定Topic里面的消息 ...

最新文章

  1. Spring MVC-表单(Form)标签-单选按钮集合(RadioButtons)示例(转载实践)
  2. android数据存储方式(三)----Files
  3. 一个发送短信验证码 然后倒计时实例
  4. android fragment动态加载,动态添加Fragment
  5. svn+ssh 想要CheckOut不容易
  6. scrapy_全站爬取
  7. 【BAT面试题系列】Java面试必考题JVM详解,BAT师兄深度解析背后原理
  8. iOS正确获取时间戳的代码
  9. 人工智能--状态空间问题求解方法
  10. 小甲鱼c语言_C语言可以不用,但是不能不会!
  11. 如何使用MATLAB绘制平滑曲线
  12. codeforces633H Fibonacci-ish II
  13. A Survey on Vision Transformer
  14. HJY-F931B/YJDC220V数字交流三相电压继电器
  15. Chrome不是浏览器----Google 要推 Chrome 操作系统
  16. 【报告分享】中国互联网经济白皮书3.0-BCG阿里研究院(附下载)
  17. win8右下角网络图标不见了_win8系统右下角的音量图标不见了的具体办法
  18. Visual Studio Code之xml编辑器安装
  19. 作为一个技术研发者的自省(年终总结)
  20. 是35岁的焦虑被贩卖了吗?

热门文章

  1. Javabean学习纪要
  2. 办公族的健康提醒脚本
  3. 《LeetCode力扣练习》第6题 C语言版 (做出来就行,别问我效率。。。。)
  4. proguard java 教程,[Gradle中文教程系列]-跟我学Gradle-使用proguard混淆你的spring boot应用...
  5. ajax实现动态及时刷新表格数据_如何爬取网页数据
  6. url 参数 后台 加密_一套拿来即用的后台管理系统,非常方便(附项目地址)
  7. c语言c99标准_如何成为一名优秀的 C 语言程序员?
  8. 自拟计算机作文100字,玩电脑作文100字胡佳慧
  9. winform打开cad图纸_CAD打开图纸的方法汇总
  10. python基础实验报告答案_Python基础(上)实验报告