背景信息
一个新的应用接入消息队列需要先创建相关资源,包括:Vhost、User、Exchange、Queue。
操作步骤
创建Vhost
1.登录消息队列rabbitMQ的控制台。
2.进入相应实例的管理页面。
3.点击左侧选项卡的集群管理,然后进入主界面的虚拟主机。
4.点击新建,输入虚拟主机名称即可新增Vhost。
设置Vhost名称时,请注意有如下要求:
- Vhost名称只能包含字母、数字、短划线(-)、下划线(_)。
- Vhost名称长度限制在1~64个字符,长度超过64个字符将被自动截取。
- Vhost创建成功后,Vhost名称不可修改。
创建User并且配置Vhost的权限
1.登录消息队列rabbitMQ的控制台。
2.进入相应实例的管理页面。
3.点击左侧选项卡的集群管理,然后进入主界面的“用户界面”。
4.创建成功后给用户配置vhost的权限,选择目标虚拟主机。
5.创建成功后给用户配置vhost的权限,选择目标虚拟主机,然后进入主机详情,点击权限tab页,点击新增权限。
6.创建成功后给用户配置vhost的权限,选择目标虚拟主机,然后进入主机详情,点击权限tab页,点击新增权限。
Tips:权限配置规则为正则表达式。例如 .* 表示所有权限。
如'^(amq.gen.*|amq.default) '可以匹配server生成的和默认的exchange,'^ '不匹配任何资源。
创建Exchange
当创建Vhost时,会创建5个默认的Exchange,如需要额外创建Exchange,可进入实例列表的交换器选项卡进行新建。
参数说明如下表所示
参数 | 描述 |
---|---|
虚拟主机 | 选择创建交换器所属的虚拟主机 |
名称 | 交换器名称。以amq.开头的为保留字段,因此不能使用。例如:。 |
类型 | Exchange类型。取值: |
类型 | direct:该类型路由规则会将消息路由到Binding Key与Routing Key完全匹配的Queue中。 |
类型 | topic:该类型与direct类型相似。Topic Exchange路由规则没有Direct Exchange那么严格, 支持模糊匹配和多条件匹配,即该类型Exchange使用Routing Key模式匹配和字符串比较的方式将消息路由至绑定的Queue中。 |
类型 | fanout:该类型路由规则非常简单,会把所有发送到该Exchange的消息路由到所有与它绑定的Queue中,相当于广播功能。 |
类型 | headers:该类型与direct类型相似。Headers Exchange使用Headers属性代替Routing Key进行路由匹配,在绑定Headers Exchange和Queue时,设置绑定属性的键值对;在向Headers Exchange发送消息时,设置消息的Headers属性键值对,使用消息Headers属性键值对和绑定属性键值对比较的方式将消息路由至绑定的Queue。 |
类型 | x-delayed-message:通过声明该类Exchange,您可以自定义消息的Header属性x-delay来指定消息延时投递的时间段,单位为毫秒。消息将在x-delay中定义的时间段后,根据路由规则被投递到对应的Queue。路由规则取决于x-delayed-type中指定的Exchange路由类型。 |
x-delayed-type | 当Exchange类型为x-delayed-message时,需要配置此参数,以指定Exchange的路由类型。 |
是否持久化 | 交换器是否持久化到磁盘 |
是否自动删除 | 如果是,交换器将在至少一个队列或交换器绑定到该交换器,然后所有队列或交换器都已解除绑定时删除。 |
是否内置 | 如果是,客户端不能直接发布到这个交换器。它只能与其他交换器绑定使用。 |
其他参数 | Alternate exchange:备份交换器是为了实现没有路由到队列的消息,声明交换机的时候添加属性alternate-exchange,声明一个备用交换机,一般声明为fanout类型,这样交换机收到路由不到队列的消息就会发送到备用交换机绑定的队列中。 |
创建Queue
可以在代码中声明,会自动创建队列。也可以进入控制台,在实例列表的队列选项卡进行新建。
参数说明如下表所示:
参数 | 描述 |
---|---|
虚拟主机 | 选择创建队列所属的虚拟主机 |
名称 | 队列的名称。以amq.开头的为保留字段,因此不能使用。例如:amq.test。 |
存储节点 | 队列数据存储节点 |
是否持久化 | 队列元数据是否持久化到磁盘 |
是否自动删除 | 最后一个Consumer取消订阅后,Queue是否自动删除。 |
其他参数 | Message TTL-消息过期时间:number型(单位:ms) Auto expire-队列过期时间,过期后队列自动删除:number型(单位:ms) Max length-队列能保存的最大消息数:number型(单位:个) Max length bytes-队列能保存的最大消息量:number型(单位:字节) Overflow behaviour 超过队列的最大设定值后消息接收策略:drop-head,reject-publish drop-head:删除头部消息,一般就是最早发送的消息,保证队列可用 reject-publish:拒绝接受新的消息,保证消息不丢失 Dead letter exchange死信交换器名称 Dead letter routing key死信路由键 Maximum priority队列最大优先级:要开启消息的优先级,必须设置消息所在队列的优先级 Lazy mode队列惰性模式:default、lazy default:默认值,普通队列 lazy:惰性队列,尽可能将消息存到磁盘中,会引起I/O操作比较多,内存消耗极少(有大量堆积的持久化消息建议使用) Master Locator 队列保存位置:client-local、min-masters、random client-local:队列创建时所用连接的节点 min-masters: 集群中节点主数量最少的节点 random:由rabbitmq服务器随机指定一个节点 |