java教程之rabbitmq介绍

千锋程序员日记      2022-05-10     310

关键词:

前言

  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个或多个单词。

杂项之rabbitmq

杂项之rabbitmq本节内容rabbitmq简介AMQP协议rabbitmq使用应用举例rabbitmq简介介绍rabbitmq之前,先介绍一下AMQP协议,因为rabbitmq就是基于AMQP协议实现的一个服务程序。(目前为止应该也是唯一实现了AMQP协议的服务)AMQP(高级消息队列... 查看详情

rabbitmq基础教程之基本使用篇(代码片段)

RabbitMQ基础教程之基本使用篇最近因为工作原因使用到RabbitMQ,之前也接触过其他的mq消息中间件,从实际使用感觉来看,却不太一样,正好趁着周末,可以好好看一下RabbitMQ的相关知识点;希望可以通过一些学习,可以搞清楚以... 查看详情

rabbitmq基础教程之基本概念(代码片段)

RabbitMq基础教程之基本概念RabbitMQ是一个消息队列,和Kafka以及阿里的ActiveMQ从属性来讲,干的都是一回事。消息队列的主要目的实现消息的生产者和消费者之间的解耦,支持多应用之间的异步协调工作由于工作原因,接触和使用r... 查看详情

rabbitmq相关介绍之双机镜像模式集群配置

一、环境介绍系统: Centos 6.7  2.6.32-573.el6.x86_64node1  172.16.60.187node2  172.16.60.188软件包 erlang-19.0.4-1.el6.x86_64.rpm   rabbitmq-server-3.6. 查看详情

rabbitmq相关介绍之单机镜像模式集群配置

一、镜像模式集群简介  如果RabbitMQ集群只有一个broker节点,那么该节点的失效将导致整个服务临时性的不可用,并且可能会导致message的丢失(尤其是在非持久化message存储于非持久化queue中的时候)。当然可以将所有的pub... 查看详情

rabbitmq系列教程之六:远程过程调用(rpc)

...常称为远程过程调用或RPC。 在本教程中,我们将使用RabbitMQ构建一个RPC系统:一 查看详情

rabbimq必备基础之对高级消息队列协议amqp分析及rabbitmq本质介绍

...,消息确认,内存化,高可用,镜像】2.ActiveMQ,ZeroMQ,RabbitMQ3.Rabbitmq本质是一个什么东西????《1》rabbitmq是用什么语言写的=>erlang《2》rabbitmq其实是遵循amqp协议的一个 查看详情

rabbitmq系列教程之三:发布/订阅(publish/subscribe)

(本教程是使用Net客户端,也就是针对微软技术平台的)  在前一个教程中,我们创建了一个工作队列。工作队列背后的假设是每个任务会被交付给一个【工人】。在这一部分我们将做一些完全不同的事情--我们将向多个... 查看详情

java使用rabbitmq之公平分发

发送消息:1packageorg.study.workfair;23importcom.rabbitmq.client.Channel;4importcom.rabbitmq.client.Connection;5importorg.junit.Test;6importorg.study.utils.ConnectionUtils;78importjava.io.IOException;9impo 查看详情

docker下rabbitmq四部曲之三:细说java开发

欢迎访问我的GitHub本文是《Docker下RabbitMQ四部曲》系列的第三篇,实战两个基于SpringBoot的工程,分别用来生产和消费RabbitMQ消息;前文链接前两章的内容是体验RabbitMQ服务,以及制作RabbitMQ镜像:《Docker下RabbitMQ四部曲之一:极速... 查看详情

rabbitmq安装教程

RabbitMQ安装教程(转:http://blog.csdn.net/lu1005287365/article/details/52315786)简介:RabbitMQ是流行的开源消息队列系统,用erlang语言开发。RabbitMQ是AMQP(高级消息队列协议)的标准实现。如果不熟悉AMQP,直接看RabbitMQ的文档会比较困难。不... 查看详情

rabbitmq安装以及java连接rabbitmq之helloworld入门

一、安装入门1、安装Erlang 路径:https://github.com/rabbitmq/erlang-rpm/releases/download/v23.2.6/erlang-23.2.6-1.el7.x86_64.rpmhttps://github.com/rabbitmq/erlang-rpm/releases/download/v23.2.6/erlang-23.2.6 查看详情

高并发场景之rabbitmq

高并发场景之RabbitMQ上次我们介绍了在单机、集群下高并发场景可以选择的一些方案,传送门:高并发场景之一般解决方案但是也发现了一些问题,比如集群下使用ConcurrentQueue或加锁都不能解决问题,后来采用Redis队列也不能完... 查看详情

rabbitmq与spring整合之重要组件介绍——amqp声明式配置&rabbittemplate组件

上一节是使用rabbitAdmin的管理组件进行声明队列,交换器,绑定等操作,本节则是采用AMQP声明式配置来声明这些东西。AMQP声明主要是通过@Bean注解进行的。配置:1packagecom.zxy.demo.config;23importorg.springframework.amqp.core.Binding;4importorg.sp... 查看详情

java使用rabbitmq之订阅分发(topic)

    使用RabbitMQ进行消息发布和订阅,生产者将消息发送给转发器(exchange),转发器根据路由键匹配已绑定的消息队列并转发消息,主题模式支持路由键的通配。生产者代码:1packageorg.study.exchange3.topic3;23importcom.rab... 查看详情

rabbitmq的基本介绍

  RabbitMQ官网教程:http://www.rabbitmq.com/getstarted.html  RabbitMQ是一个由Erlang语言开发的AMQP的开源实现。AMQP:AdvancedMessageQueue,高级消息队列协议。它是应用层协议的一个开放标准,为面向消息的中间件设计,基于此协议的客户... 查看详情

java开发-消息队列之rabbitmq初体验(代码片段)

目录前言RabbitMQ什么是RabbitMQRabbitMQ特点安装启动RabbitMQ和Kafka的消息收发区别RabbitMQ使用案例添加依赖添加配置创建RabbitMQ配置类RabbitMQ消息的发送RabbitMQ消息的接收测试结语前言前一篇,我们学习了Kafka的基本使用,这一篇... 查看详情

java面试之rabbitmq

135.RabbitMQ的使用场景有哪些?抢购活动,削峰填谷,防止系统崩塌。延迟信息处理,比如 10分钟之后给下单未付款的用户发送邮件提醒。解耦系统,对于新增的功能可以单独写模块扩展,比如用户确认评价之后,新增了给用... 查看详情