`

rabbitmq 学习-7-rabbitmq 支持场景

阅读更多

What messaging scenarios are supported by AMQP and RabbitMQ?

AMQP is a very general system that can be configured to cover a great variety of messaging middleware use-cases. For example:

 

  • Point-to-point communication

    One of the simplest and most common scenarios is for a message producer to transmit a message addressed to a particular message consumer. AMQP covers this scenario by allowing queues to be named and to be bound to a "direct" exchange, which routes messages to queues by name.

  • One-to-many broadcasting (including multicast)

    In this scenario, the broadcasters publish messages to an AMQP "fanout" exchange, and subscribers create and subscribe to their own private AMQP queues, which forward published messages on to them, with one copy per queue.

    Multicast is addressed at the broker implementation level. AMQP clients need not be made aware of transport-level optimisations such as multicast: broker clusters are free to use whatever such low-level optimisations are available from configuration to configuration.

    Multiple optimisations are possible, since AMQP separates routing logic (exchanges and bindings) from message queueing (queues). Multicast relates only to routing from message publishers to message queues, and as a routing optimisation can be completely physically decoupled from AMQP's logical semantics. Further optimisations include physical separation of exchange from queue or even colocation of queue with a consumer application.

  • Transactional publication and acknowledgement

    AMQP supports transactional publication, where an AMQP channel is opened, transactional mode is selected, messages are published and acknowledged, and the transaction is committed. The system guarantees atomicity and durability properties for transactional message activity.

  • High-speed transient message flows

    Messages are individually flagged as transient or persistent in AMQP at the time of publication. By sending messages outside the transactional part of the protocol, in non-persistent mode, an application can achieve very high throughput and low latency.

  • Reliable persistent message delivery

    Messages that are published in persistent mode are logged to disk for durability. If the server is restarted, the system ensures that received persistent messages are not lost. The transactional part of the protocol provides the final piece of the puzzle, by allowing the server to communicate its definite receipt of a set of published messages.

  • Store-and-forward

    Store-and-forward is implemented by delivering messages marked as "persistent" to AMQP's durable queues. Published, persistent messages delivered to durable queues are stored on disk until a consumer retrieves and deletes them.

  • Wide area messaging

    Because routing logic is decoupled from message delivery, RabbitMQ is able to support extended broker clustering across WANs. Some of the approaches include AJAX-style access to AMQP resources, and spanning-tree pseudo-multicast implemented internally to a RabbitMQ cluster.

  • File streaming

    The AMQP protocol, version 0-8, supports file streaming by way of the de>filede> content class. Very large files are transferred to a temporary area on the broker before being routed to queues for download by consumers.

分享到:
评论

相关推荐

    PAcee1#myNote#04.RabbitMQ高级-消息100%投递成功方案1

    1.消息入库,比如订单场景,当我们创建一条订单,需要发送消息给优惠券模块,来减少用户使用的优惠券 2.如果消息在第一步成功入库 3.MQ收到消息后返回结果响应

    GitChat分享会-RabbitMQ典型场景实战-源码数据库

    GitChat分享会-RabbitMQ典型场景实战-源码数据库。 有任何问题均可以与博主交流:1974544863。

    消息队列RabbitMQ学习-1

    消息队列RabbitMQ学习 为什么学习RabbitMQ 每一种技术的出现,都是为了解决业务需求而产生的。通常的背景是,在某种业务场景下,出现了某种问题,怎么解决这种问题,一个新的技术产生了。下面举个单体架构的例子来...

    rabbitmq-stress-test:对 RabbitMQ 集群进行压力测试

    RabbitMQ压力测试 目录 概述 这是一个场景及其 PHP 实现(使用 )来对具有的集群进行压力测试。 可变数量的生产者和消费者将与跨集群的两个节点的镜像队列进行交互。 这些节点会根据场景突然关闭并恢复。 我们确保...

    RabbitMQ实战场景(一)异步记录用户操作日志 实战教程源码

    要求:采用 RabbitMQ 的 DirectExchange+RoutingKey 消息模型来实现【异步记录用户操作日志】 --------------------- 参考博文:https://blog.csdn.net/qq_29914837/article/details/93254677

    rabbitmq学习资料

    该文档主要描述对初学者rabbitmq的认识 已经demo案例 结合spring boot的使用场景

    第三节课-Rabbitmq镜像队列搭建-开发应用场景1

    第三节课:Rabbitmq镜像队列搭建 开发应用场景一:集群节点安装1.1)集群节点安装(老师的是192.168.159.86;在这里老师是以我的86服务器单台

    springboot-rabbitmq:springboot-rabbitmq学习与实践项目

    项目须知项目包括springboot集成rabbitmq入门和实战,stater包下是入门代码,practice1下面是实战代码starter内包括的是基本的springboot集合rabbitMq的使用练习内包含:秒杀场景兔MQ死信量子兔MQ

    rabbitmq详细描述,帮你解决问题

    > 市面上比较火爆的几款MQ: > > ActiveMQ,RocketMQ,Kafka,...支持消息的持久化、事务、拥塞控制、负载均衡等特性,使得RabbitMQ拥有更加广泛的应用场景。RabbitMQ跟Erlang和AMQP有关。下面简单介绍一下Erlang和AMQ

    Java开发面试-RabbitMQ专区

    Java开发RabbitMQ部分是面试中经常涉及的技术领域之一,尤其对于工作一年左右的开发者来说,掌握RabbitMQ的原理和应用场景能够提升自己的竞争力和职业发展。下面就来详细介绍一下Java开发RabbitMQ部分可能涉及的面试...

    RabbitMQ实战视频.zip

    在此,我精心录制的这一套视频教程将几乎手把手指导大家入门学习RabbitMQ并将所学的知识要点实战到实际的业务场景中,特别是在第二阶段的学习,将采用SpringBoot整合RabbitMQ的方式来实战实际的业务场景,并用来解决...

    word源码java-rabbitmq-tutorial-java:RabbitMQ官方教程的翻译和说明--Java版

    生产者和RabbitMQ服务器建立连接和通道,声明路由器,同时为消息设置路由键,这样,所有的消息就会以特定的路由键发给路由器,具体路由器会发送到哪个或哪几个队列,生产者在大部分场景中都不知道。(1个路由器,但...

    贝岭的matlab的代码-belling-spring-rabbitmq:Spring项目集成了消息队列-RabbitMQ,实现了普通消息订阅

    贝岭的matlab的代码 belling-spring-rabbitMQ 百灵Spring集成RabbitMQ封装 简介 Spring项目集成了消息队列-RabbitMQ,考虑到数据安全和稳定性,...RabbitMQ本身是不支持延迟消息发送,需要下载rabbitmq_delayed_mess

    RabbitMq介绍

    主要介绍了RabbitMq的一些基本概念 ,包括了结构,使用过程,类型,以及一些应用场景

    比RabbitMQ性能更好的消息队列RocketMQ

    比RabbitMQ性能更好的消息队列RocketMQ RabbitMQ 由于持久化场景下的吞吐量只有2.6万 经过 RabbitMQ,Kafka 和 RocketMQ( ActiveMQ 性能较差,暂不考虑)的调研和分析后,我们发现 RocketMQ 比较适合

    rabbitmq源代码,各种应用场景的调用实例,安装文档

    rabbitmq源代码,各种应用场景的调用实例,安装文档,介绍PPT

    Spring Bootg整合RabbitMQ

    Spring Boot与RabbitMQ的整合,内容非常简单,纯API的调用操作。 操作之间需要加入依赖Jar Message Broker是一种消息验证、传输、路由的架构模式,其设计目标主要应用于下面这些场景: 消息路由到一个或多个目的地 ...

    RabbitMQ环境搭配.doc

    本篇文章是我在linux搭建rabbitmq的步骤以及过程,以及rabbitmq概念+使用场景。图文介绍更加方便大家按照步骤一步步操作

    Java中间件-RabbitMQ教程

    1. 了解消息中间件背景知识、使用场景、发展等 2. 掌握RabbitMQ、RocketMQ、Kafka这三款主流的消息中间件的架构、模型和使用(开发、 安装、集群部署、运维、监控等) 3. 掌握消息的可靠性、幂等性、顺序消息、延迟...

    RabbitMq使用手册

    RabbitMq使用手册,介绍了rabbitmq的几种应用场景以及开发指导

Global site tag (gtag.js) - Google Analytics