Exchange管理
本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。
Producer将消息发送到Exchange,由Exchange将消息路由到一个或多个Queue中(或者丢弃)。Exchange根据Routing Key将消息路由到Queue。不同类型的Exchange的路由规则不同。本文介绍如何在云消息队列 RabbitMQ 版控制台创建Exchange、查看统计数据、绑定Queue、绑定Exchange、被Exchange绑定以及发送消息。
创建Exchange
登录云消息队列 RabbitMQ 版控制台,然后在左侧导航栏选择实例列表。
在实例列表页面的顶部菜单栏选择地域,然后在实例列表中,单击目标实例名称。
在左侧导航栏,单击Exchange 列表。
在Exchange 列表页面,在当前 Vhost右侧的切换下拉列表中,选择Vhost,然后单击创建 Exchange。
在创建 Exchange面板,输入Exchange名称,选择Exchange类型,设置是否为Internal类型,然后单击确定。
参数
描述
Exchange 名称
Exchange名称。以amq.开头的为保留字段,因此不能使用。例如:amq.test。
类型
Exchange类型。取值:
direct:该类型的路由规则会将消息路由到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-consistent-hash:x-consistent-hash Exchange支持将Routing Key或Header值进行Hash计算,使用一致性哈希算法将消息路由到不同的Queue上。
x-delayed-type
当Exchange类型为x-delayed-message时,需要配置此参数,以指定Exchange的路由类型。
哈希取值
当Exchange类型为x-consistent-hash时,需要配置此参数,以指定Hash计算的输入值为哪种类型。取值如下:
RoutingKey
Header 值:使用Header方式作为Hash计算输入值时,您需要定义hash-header参数的取值。
hash-header
当Exchange类型为x-consistent-hash且哈希取值为Header 值时,需要配置此参数,作为指定Hash计算的输入值。
Internal
是否为Internal类型,默认值为否。取值:
是:内建类型,用于Exchange和Exchange之间的绑定。
否:非内建类型,用于Exchange和Queue之间的绑定。
查看统计数据
您可以查看各种指标数据,帮助您及时发现和定位问题。
绑定Queue
为Exchange绑定Queue,从而告诉Exchange消息应该被路由到哪些Queue中。
在Exchange 列表页面,选择指定Exchange,在其操作列单击绑定信息。
在Exchange 详情页面的绑定关系页签,单击添加绑定。
在添加绑定面板,选择绑定目标类型为Queue,选择绑定目标,设置Routing Key,然后单击确定。
说明若绑定的Exchange的类型为x-consistent-hash时,Routing Key表示绑定的Queue的权重,只能设置为整数,取值范围为[1~20]。
当存在重复绑定时,只有第一个符合要求的绑定关系生效。
若需要修改已绑定Queue的权重,请先删除已有的绑定关系再重新添加绑定。
绑定Exchange
为某个Exchange绑定另一个Exchange,从而让消息根据路由规则从被绑定的Exchange转发到该Exchange。
在Exchange 列表页面,选择指定Exchange,在其操作列单击绑定信息。
在Exchange 详情页面的绑定关系页签,单击添加绑定。
在添加绑定面板,选择绑定目标类型为Exchange,选择绑定目标,设置Routing Key,单击确定。
被Exchange绑定
让某个Exchange被另一个Exchange绑定,从而让消息根据路由规则从该Exchange转发到另一个Exchange。
在Exchange 列表页面,选择指定Exchange,在其操作列单击详情。
在Exchange 详情页面,选择被绑定关系页签,然后单击添加被绑定。
在添加被绑定面板,选择源Exchange,在Routing Key文本框输入Routing Key,绑定目标类型默认为Exchange,目标Exchange默认为此Exchange,单击确定。
发送消息
为Exchange添加绑定或被绑定关系后,可直接在控制台发送消息,将消息从Exchange发送到绑定的Queue中,或从被绑定的Exchange发送到源Exchange中。
在Exchange 列表页面,选择指定Exchange,在其操作列单击详情。
在Exchange 详情页面,选择绑定关系或被绑定关系页签。
在绑定关系或被绑定关系列表中,选择指定的绑定关系,在其操作列,单击发送消息。
在弹出的发送消息面板中输入messageId和messageBody,然后单击确定。
删除Exchange
删除指定Exchange后,生产者将无法将消息发送到该Exchange,也无法由当前Exchange路由到一个或多个Queue中,请您谨慎执行。
headers类型的Exchange不支持删除。
Vhost下的3个内置Exchange(amq.direct、amq.topic和amq.fanout)不支持删除。
在Exchange 列表页面,单击指定Exchange,在Exchange详情页面的右上角单击删除。
在提示对话框,认真阅读提示信息,单击确认。
相关文档
更多与Exchange相关的信息,请参见Exchange。