RabbitMQ-基本概念(一)
整体架构模型
Producer
消息生产者,生产者创建消息然后发布到RabbitM中,消息一般包含2个部分 消息体(payload)和标签 消息体就是带有业务逻辑结构的数据,消息标签用来表述这条消息,比如交换器名称和路由键
生产者将消息交给RabbitMQ rabbItMQ会根据标签将消息投递到对应的消费组
队列
RabbitMQ的内部对象,用于存储消息 rabbitMQ不支持广播消息,当多个消费者订阅同一个队列,则会平均分摊到对应的消费者
Consumer
消费者,消费组连接到RabbitMQ并订阅到队列上,当消费一条消息只会消费消息体 标签会被丢弃
Exchange
交换器,生产者将消息投递到exchange exchange将消息路由到一个或者多个队列 如果路由不到可以返回给生产者或者直接丢弃exchange含有4种类型
fanout:将所有发送到该交换器的消息路由到所有与该交换器绑定的队列中(不需要经过binding key 路由 所以最快)
direct:将消息路由到routing key和binding key完全匹配的队列中
topic:direct是完全匹配 topic则是模糊匹配 如有路由键
路由键:*.rabbitmq.*可以路由:com.rabbitmq.client java.rabbitmq.demo
路由键:*.*.client 可以路由com.rabbitmq.client com.hiddent.client
路由键:com.#可以com.rabbitmq.client com.hiddent.client com.hiddent.demo
.分割的算一个但是 *表示模糊一个单词 #表示多个单词
比如*.rabbitmq.* 表示[任意一个单词].rabbitmq.[任意一个单词] com.test.rabbitmq.com 是不能路由的 因为rabbtimq左边有2个单词 com和test
headers,
不依赖于路由键盘的匹配规则来路由消息 而是根据发送消息内容中的headers属性进行匹配,在绑定队列和交换器时指定一组键值对,发送消息会获取headers的来进行路由匹配 效率很低 基本不会使用
RoutingKey
路由键,生产者将消息发给交换器的时候一般会指定一个routingKey用来指定这个消息的路由规则 routingKey需要和BidingKey联合使用才能生效
BindingKey
通过BidingKey将交换器与队列关联起来 交换器通过BindingKey知道路由到哪个队列上
理解
producer理解为包裹寄送人
exchange 理解为配送驿站
routing key 理解为配置驿站地址
binding key理解目的地址
复用Channel
发送消息和消费消息都需要1.创建连接再根据连接创建channel 跟java nio模型一样,复用连接多个生成者和多个消费者复用一个连接,避免为每个生产者和消费者都创建一个连接
但是要注意channel并不是线程共享的 需要为每个线程创建一个channel 不能a线程创建了channel进行发送消息 然后又给b线程发消息 b线程应该另外创建channel
什么是AMQP协议
上面的架构模型 生产者通过routing key投递消息到exchage exchage根据binding key 路由到队列 具体书26页
RabbitMQ-基本概念(一)的更多相关文章
- RabbitMQ基本概念和使用
RabbitMQ是一个消息代理,核心原理:发送消息,接收消息. RabbitMQ主要用于组件之间的解耦,消息发送者无需知道消息使用者的存在,反之亦然. 单向解耦 ...
- RabbitMQ如何工作和RabbitMQ核心概念
RabbitMQ是一个开源的消息代理软件.它接受来自生产者的消息并将其传递给消费者.它就像一个中间人,可以用来减少Web应用程序服务器的负载和交付时间. RabbitMQ如何工作 让我们简要介绍一下R ...
- RabbitMQ基本概念和原理
RabbitMQ基本概念和原理 1.AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计. 2.Rabb ...
- rabbitMQ基本概念
一.网页登录方法 http://127.0.0.1:15672/ 用户名和密码默认为guest/guest 用java代码去连接rabbitmq用的端口是5672 二.rabbitMQ基本概念 Rab ...
- RabbitMQ 幂等性概念及业界主流解决方案
RabbitMQ 幂等性概念及业界主流解决方案 2019年01月24日 15:57:03 JAVA@架构 阅读数:506 一.什么是幂等性 可以参考数据库乐观锁机制,比如执行一条更新库存的 SQL ...
- RabbitMq基本概念理解
RabbitMQ的基本概念 RabbitMQ github项目地址 RabbitMQ 2007年发布,是一个在AMQP(高级消息队列协议)基础上完成的,可复用的企业消息系统,是当前最主流的 消息中间件 ...
- RabbitMQ总结概念
AMQP:一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计 http://www.diggerplus.org/archives/3110 AMQP ...
- RabbitMQ基础概念详细介绍
http://blog.csdn.net/column/details/rabbitmq.html 转至:http://www.ostest.cn/archives/497 引言 你是否遇到过两个(多 ...
- RabbitMQ 基本概念介绍-----转载
1. 介绍 RabbitMQ是一个由erlang开发的基于AMQP(Advanced Message Queue )协议的开源实现.用于在分布式系统中存储转发消息,在易用性.扩展性.高可用性等方面都非 ...
- RabbitMQ核心概念篇
RabbitMQ介绍 一.RabbitMQ使用场景 RabbitMQ他是一个消息中间件,说道消息中间件[最主要的作用:信息的缓冲区]还是的从应用场景来看下: 1.系统集成与分布式系统的设计 各种子系统 ...
随机推荐
- Linux下 CentOS 7 对比6 改动详解 及 系统安装
系统基础服务变化 操作系统 本文CentOS7 为最新版7.5 本文CentOS6 为6.9 操作 Centos6 Centos7 对比 自动补全 只支持命令.文件名 支持命令.选项.文件名 文件系统 ...
- E2017E0605-hm
carbon copy 抄送, 抄写与送达 blind carbon copy 密送 blind adj. 失明的; 盲目的,轻率的; contact n. 接触; 触点 v 联系,接触; ...
- bzoj 1653: [Usaco2006 Feb]Backward Digit Sums【dfs】
每个ai在最后sum中的值是本身值乘上组合数,按这个dfs一下即可 #include<iostream> #include<cstdio> using namespace st ...
- 观光公交 2011年NOIP全国联赛提高组(贪心,递推)
观光公交 2011年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 风景迷人的小城 Y 市 ...
- 51NOD 1088 最长回文子串&1089 最长回文子串 V2(Manacher算法)
回文串是指aba.abba.cccbccc.aaaa这种左右对称的字符串. 输入一个字符串Str,输出Str里最长回文子串的长度. Input 输入Str(Str的长度 <= 1000(第二题要 ...
- 利用Openfiler配置基于文件系统的网络存储
一.Openfiler简介 Openfiler是一个操作系统,其提供基于文件的网络附加存储和基于块的存储区域网络功能. Openfiler支持的网络协议包括:NFS,SMB/CIFS,HTTP/Web ...
- Kafka~消费的有效期
消息的过期时间 我们在使用Kafka存储消息时,如果已经消费过了,再永久存储是一种资源的浪费,所有,kafka为我们提供了消息文件的过期策略,可以通过配置server.properies来实现# vi ...
- java简单打印金字塔(案例)
学习编程语言,打印简单的金字塔是基础的案例,在这里就简单的写了个案例,希望能帮助到各位 代码 效果 class kinTa{ public static void main(String[] ...
- C# 代码笔记_文件
string Route = @"D:\ksy\ksy\WebSite1\";//文件地址 string File_name = "user ...
- HTML——meta
http://www.cnblogs.com/jr1993/p/4542862.html