Spring集成rabbitmq

一.AMQP(Advanced Message Queuing Protocol)

  提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,是面向消息的中间件设计。基于此协议的客户端与消息中间件可以传递消息,并不受客户端/中间件类型、开发语言等条件的限制。

  RabbitMQ是基于Erlang Virtual Runtime的AMQP的实现。因此可以跨语言的实现消息传递。(TODO:实现javascript与java的消息交互)

二.一些概念

  1.AMQP是异步消息协议,关于消息通信的基本方式有两种:

    1)同步方式

    两个通信应用服务器之间必须进行同步,即发送方在发送消息之后需要等待接收方返回对于消息的回馈,之后才能进行下一步。

    2)异步方式

    两个通信应用服务器无需在线等待,发送方发送消息之后可以直接进行下一步操作,但是也因此无法获得发送方反馈。

  tips:RabbitMQ有用到ACK机制,它默认是开启的。当消费者获取Message之后,并正确处理之后会返回给RabbitMQ服务器一个确认消息,服务器收到确认消息会从queue中删掉这个Message。而如果消费者再处理时报错,没有返回确认消息,这个消息会被再次被发送(可能是给自己,也可能是给另外的消费者)。RabbitMQ并没有设置消息处理的超时时间,也就是说消费者可以一直处理下去,当消费者突然中断连接才会判断处理失败。这也带来一个问题,当由程序手动返回acknowledge消息时,如果出现bug没有返回acknowledge则不会再给这个消费者分发消息。

  2.Producer:消息的发送方

  3.Exchange:交换机,发送方并不会直接将消息发送给消费者,每种Exchange都有自己的路由规则

    1)direct exchange:QueueName会默认作为RoutingKey来使用。Exchange会按照完全匹配的方式,将消息发送到对应的Queue中。

    2)fanout exchange:广播式的exchange,发送方使用fanout Exchange的时候并不需要指定Queue的RoutingKey,消息会发送给所有绑定到fanout Exchange上的队列。

    3)topic exchange:使用方式最自由的exchange,这个exchange可以绑定一个正则表达式。符号“#”会匹配一个或多个词,符号“*”匹配一个词。exchange会对发送方发送的RoutingKey进行正则匹配,消息会发送到所有匹配到的队列中。

  3.Queue:队列,存储消息的结构

  4.RoutingKey:交换机与队列绑定,RoutingKey就是绑定(binding)的逻辑。

时间: 2024-09-29 22:11:42

Spring集成rabbitmq的相关文章

rabbitMQ第五篇:Spring集成RabbitMQ

前面几篇讲解了如何使用rabbitMq,这一篇主要讲解spring集成rabbitmq. 首先引入配置文件org.springframework.amqp,如下 <dependency> <groupId>org.springframework.amqp</groupId> <artifactId>spring-rabbit</artifactId> <version>1.6.0.RELEASE</version> <

RabbitMQ第四篇:Spring集成RabbitMQ

前面几篇讲解了如何使用rabbitMq,这一篇主要讲解spring集成rabbitmq. 首先引入配置文件org.springframework.amqp,如下 <dependency> <groupId>org.springframework.amqp</groupId> <artifactId>spring-rabbit</artifactId> <version>1.6.0.RELEASE</version> <

spring 集成rabbitmq

mq.properties mq.host=主机ip mq.username=admin mq.password=admin123 mq.port=5672 mq.queue.vip=test-queue mq.exchange=test-exchange mq.vhost=test spring-rabbitmq.xml <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http:/

spring集成RabbitMQ配置文件详解(生产者和消费者)

1,首先引入配置文件org.springframework.amqp,如下: <dependency> <groupId>org.springframework.amqp</groupId> <artifactId>spring-rabbit</artifactId> <version>1.7.1.RELEASE</version> </dependency> 2,准备工作:安装好rabbitmq,并在项目中增

RabbitMQ及Spring集成

部分转载自https://blog.csdn.net/whoamiyang/article/details/54954780 1.背景 RabbitMQ是一个由erlang开发的AMQP(Advanved Message Queue)的开源实现. 2.应用场景 2.1异步处理 场景说明:用户注册后,需要发注册邮件和注册短信,传统的做法有两种1.串行的方式;2.并行的方式 (1)串行方式:将注册信息写入数据库后,发送注册邮件,再发送注册短信,以上三个任务全部完成后才返回给客户端. 这有一个问题是,

RabbitMQ安装和使用(和Spring集成)

一.安装Rabbit MQ Rabbit MQ 是建立在强大的Erlang OTP平台上,因此安装Rabbit MQ的前提是安装Erlang.通过下面两个连接下载安装3.2.3 版本: 下载并安装 Eralng OTP For Windows (vR16B03) 运行安装 Rabbit MQ Server Windows Installer (v3.2.3) 具体操作步骤参考:在 Windows 上安装Rabbit MQ 指南 本人遇到的问题 当安装RabbitMQ后,使用rabbitmqctl

spring boot Rabbitmq集成,延时消息队列实现

本篇主要记录Spring boot 集成Rabbitmq,分为两部分, 第一部分为创建普通消息队列, 第二部分为延时消息队列实现: spring boot提供对mq消息队列支持amqp相关包,引入即可: [html] view plain copy <!-- rabbit mq --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-

消息中间件系列四:RabbitMQ与Spring集成

一.RabbitMQ与Spring集成  准备工作: 分别新建名为RabbitMQSpringProducer和RabbitMQSpringConsumer的maven web工程 在pom.xml文件里面引入如下依赖: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocati

Spring Boot系列——7步集成RabbitMQ

RabbitMQ是一种我们经常使用的消息中间件,通过RabbitMQ可以帮助我们实现异步.削峰的目的. 今天这篇,我们来看看Spring Boot是如何集成RabbitMQ,发送消息和消费消息的.同时我们介绍下死信队列. 集成RabbitMQ 集成RabbitMQ只需要如下几步即可 1.添加maven依赖 <!--rabbitmq--> <dependency> ? ? <groupId>org.springframework.boot</groupId>