08.RabbitMQ核心概念详解

交换机(Exchange)

交换机介绍

  • 生产者发送消息到RabbitMQ首先会到交换机中
  • 交换机的职责是根据一定规则把消息发送到队列中
  • 交换机与队列的关系是多对多(多对多的关系交给Binding去维护)
  • 交换机有四种类型(direct(默认)、fanout、topic,headers(基本没用请无视掉))

创建交换机

//第一个参数是:交换机名字,第二个是:交换机类型,第三个是:是否持久化,第四个是:是否自动删除(删除不再使用的交换机),第五个是:是否内部交换机(基本用不上),第六个是:扩展参数,类型为Map
        channel.exchangeDeclare("shanguoyu", BuiltinExchangeType.DIRECT,false,false,false,null);

Direct类型的Exchange

当消息路由键(RouteKey)与该类型交换机的绑定一致时发送到相应队列
在这里插入图片描述

Topic类型的Exchange

当消息的路由键与绑定关系模糊匹配成功则发送到相应队列,使用通配符进行模糊匹配,#匹配一个或多个词,*匹配一个词
在这里插入图片描述

Fanout类型的Exchange

与路由键和绑定无关了,如果消息发送到Fanout类型的Exchange上,那么这种类型的交换机会把消息发送给所有队列。
在这里插入图片描述

队列(Queue)

队列介绍

  • 用于存储消息
  • 消息最终会到达队列中等待消费者取走

创建队列

//第一个参数为:队列名,第二个参数为:是否持久化,第三个参数为:是否为独占队列(用于保证顺序性),第四个参数:是否为自动删除队列(当没有消费者的时候),第五个参数为:扩展参数
channel.queueDeclare("shanguoyu",false,false,false,null);

创建队列时的扩展参数

参数名目的
x-dead-letter-exchange死信交换机
x-dead-letter-routing-key死信消息的可选路由键
x-expires队列在指定毫秒数后被删除(x-expires从没有消费者连接开始算起)
x-ha-policy创建HA队列
x-ha-nodesHA队列的分布节点
x-max-length队列的最大消息数
x-message-ttl毫秒为单位的消息过期时间,队列级别
x-max-length-bytes队列的最大容量,单位 Byte
x-max-priority最大优先值为255的队列优先排序功能

绑定(Binding)

  • 用于队列和交换机之间的关联(维护队列与交换机之间的关系)
  • 绑定中包含路由键(RoutingKey)
  • Exchanger和Queue的绑定可以绑定多次只是绑定规则不一样

消息(Message)

消息介绍

  • 服务器和应用程序之间传送的数据
  • 由Properties和Body(Payload)组成

Properties

属性名用处
content-type消息体的MIME类型,如application/json
content-encoding消息的编码类型,如是否压缩
message-id消息的唯一性标识,由应用进行设置
correlation-id一般用做关联消息的message-id,常用于消息的响应
timestamp消息的创建时刻,整形,精确到秒
expiration消息的过期时刻,字符串,但是呈现格式为整型,精确到秒
delivery-mode消息的持久化类型,1为非持久化,2为持久化,性能影响巨大
app-id应用程序的类型和版本号
user-id标识已登录用户,极少使用
type消息类型名称,完全由应用决定如何使用该字段
reply-to构建回复消息的私有响应队列
headers键/值对表,用户自定义任意的键和值
priority指定队列中消息的优先级
Virtual Host
  • 虚拟主机/虚拟地址
  • 用于进行逻辑隔离
  • 表示一批交换器、消息队列和相关对象
  • Virtual Host是AMQP概念的基础,必须在连接时指定,RabbitMQ默认的vhost是 /
  • 每个vhost本质上就是一个mini版的RabbitMQ服务器,拥有自己的队列、交换器、绑定和权限机制
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值