Java教程之RabbitMQ介绍

前言

  RabbitMQ是基于AMQP协议(Advanced Message Queue Protocol)的消息中间件。

  什么是消息队列

  消息队列属于进程间通信的一种方式,使用消息队列可以通过异步方式处理数据,借此可以提高系统性能。我们可以把消息当作存放数据的容器,消息的消费者可以从队列中获取数据,进行处理。常见的消息队列有:ActiveMQ,RabbitMQ,Kafka,RocketMQ等。

  RabbitMQ中用到基本概念

  Broker:消息队列的服务器实体。

  Exchange:消息交换机,它指定消息按什么规则,路由到哪个队列。

  Queue:消息队列载体,每个消息都会被投入到一个或多个队列。

  Binding:绑定,它主要是把exchange和queue按照路由规则绑定起来。

  Routing Key:路由关键字,exchange根据这个关键字进行消息投递。

  vhost:虚拟主机,一个broker里可以开设多个vhost,用作不同用户的权限分离。

  producer:消息生产者,投递消息的程序。

  consumer:消息消费者,接收消息的程序。

  channel:消息通道,在客户端的每个连接里,可以建立多个channel,每个channel代表一个会话任务。

  RabbitMQ中消息模式

  1、简单队列

  一个生产者对应一个消费者。

  2、工作队列

  一个生产者,多个消费者,一个消息只能发给一个消费者,spring中整合rabbitmq时,默认采用公平分发。

  3、发布订阅模式

  传递一个消息到多个消费者中,借助该模式可以发布的消息将被广播给所有接收者。

  使用该模式需要借助交换机,生产者将消息发送到交换机,再通过交换机到达队列。

  RabbitMQ中有四种交换机:direct/topic/headers/fanout。默认交换机是direct,发布与订阅的实现使用fanout。

  使用交换机时,每个消费者有自己的队列,生产者将消息发送到交换机(X),每个队列都要绑定到交换机。

  4、路由模式

  生产者将消息发送到direct交换机(路由模式需要借助直连交换机实现),在绑定队列和交换机的时候有一个路由key,生产者发送的消息会指定一个路由key,那么消息只会发送到相应key相同的队列,接着监听该队列的消费者消费消息。也就是让消费者有选择性的接收消息。

  5、主题模式

  又称通配符模式。

  使用直连交换机可以改善我们的系统,但是它仍有局限性,它不能实现多重条件的路由。在消息系统中,我们不仅想要订阅基于路由键的队列,还想订阅基于生产消息的源,这时候可以使用topic交换机。

  使用主题交换机时,路由键的语法形式是采用点分割的有意义的单词。例如"goods.stock.info"。

  其中:*星号代表一个单词,#井号代表0个或多个单词。

原文地址:https://www.cnblogs.com/coffees/p/12307430.html

时间: 2024-10-11 10:09:27

Java教程之RabbitMQ介绍的相关文章

学java教程之main方法

学编程吧学java教程之main方法发布了,欢迎通过xuebiancheng8.com来访问 java中的main方法是程序执行的入口.如下图 public class Person{ public static void main(String args[ ]){ System.out.println("Hello"); } } 上面就是main方法的用法,类型必须是public的 static的 void返回值 方法名也必须是main,参数args[]是数组 可以获得程序执行时的参

学java教程之super关键词

学编程吧学java教程之super关键词教程发布了,欢迎大家通过xuebiancheng8.com来访问. 前面一次课分析了this关键词的用法,this关键词主要有两个作用,第一个作用是访问当前对象的构造方法,第二个作用是访问当前对象的构造方法,其实super和this关键词的作用相似,super的作用有访问父类的构造方法,第二个作用访问父类的属性和方法. 下面我们来分析super关键词的作用.先来看一个例子 public class Person{ private String userna

学java教程之this关键字

学编程吧学java教程之this关键字发布了,欢迎通过xuebiancheng8.com来访问 java中的this关键字是一个非常重要的关键词.java中的this关键词主要有两种用法,先看第一种 public class Person{ private String username; private int age; public Person(String username,int age){ this.username = username; this.age = age; } } 在

学java教程之String类

学编程吧学java教程之String类发布了,欢迎通过xuebiancheng8.com来访问 java类中的String类应该是用的最多的一个类,我们时时刻刻都离不开String类,时时刻刻都在用,面试的时候经常考,比方说问String类是不是基本数据类型.答案是否定了,String类不是基本数据类型,只不过String类和基本数据类型的用法很相似. 下面来看String类的用法. String str= “abc”;//定义了一个字符串abc String str1= new String(

学java教程之java内存分析

学编程吧学java教程之java内存分析发布了,欢迎大家通过xuebiancheng8.com来访问 java的内存模型是java中非常重要的知识,也是面试的时候重点. java虚拟机的内存模型中和我们打交道多的分为这么几个区域 堆区,栈区,方法区. 其中方法区又分为常量池,静态区和方法区. 这几部分分别是干嘛的呢,堆区是用来存放new出来的对象的,堆区是应用程序共享的区域. 栈区又叫方法栈,程序在运行的时候,代码要在方法栈中运行,运行的代码需要放在方法栈中来执行,然后寄存器一行一行加载执行.

(转)ligerUI 使用教程之Tip介绍与使用

概述:   ligertip是ligerUI系列插件中的tooltip类插件,作用是弹一个浮动层,起提示作用   阅读本文要求具备jQuery的基本知识,不然文中的javascript代码不易理解 截图: 参数: content 气泡显示内容,支持html callback 弹出tip后触发事件(例3) width 气泡层宽度 x tip的left(例2) y tip的top(例2) target domid(例2) 用法: 例1 页面上某个或某些dom元素弹出tip以及关闭 例2 弹出一个可设

java教程之java基础

一:java概述: 1991 年Sun公司的James Gosling等人开始开发名称为 Oak 的语言,希望用于控制嵌入在有线电视交换盒.PDA等的微处理器: 1994年将Oak语言更名为Java: Java的三种技术架构: JAVAEE:Java Platform Enterprise Edition,开发企业环境下的应用程序,主要针对web程序开发: JAVASE:Java Platform Standard Edition,完成桌面应用程序的开发,是其它两者的基础: JAVAME:Jav

Java教程之Java反射

反射是Java中核心技术之一,这里先不定义什么叫反射,先看一个例子 public class Person { public void run() { System.out.println("Hello Wolrd"); } } 要求: 1) 创建一个person的实例,单不能使用Person person = new Person()的方式 2) 调用run()方法,也不能使用person.run()方式 我们知道要调用方法必须先要有对象,现在不能通过new关键字来实例化对象,只能通

w3schools网站的HTML教程之HTML介绍

什么是HTML HTML 是一种描述 Web 文档(页面)的标记语言. HTML 代表超文本标记语言(Hyper Text Markup Language) 标记语言就是一组标记标签 HTML 文档是由 HTML 标签来描述的 每个 HTML 标记描述了不同的文档内容 HTML 示例代码 <!DOCTYPE html> <html> <head> <title>Page Title</title> </head> <body&g