12.2. 配置消息 diverts
要在代理实例中配置一个 divert,在 broker.xml
配置文件的 core
元素中添加一个 divert
元素。
<core> ... <divert name= > <address> </address> <forwarding-address> </forwarding-address> <filter string= > <routing-type> </routing-type> <exclusive> </exclusive> </divert> ... </core>
- divert
-
一个 disrt 的命名实例。只要每个
divert
都有唯一的名称,您可以在broker.xml
配置文件中添加多个 divert 元素。 - address
- 从中分离 消息的地址
- forwarding-address
- 信息转发到的地址
- filter
- 可选消息过滤器。如果您配置了过滤器,则只有与过滤器字符串匹配的消息才会被分解。如果没有指定过滤器,则所有消息都会被视为 disrt 的匹配。
- routing-type
分散消息的路由类型。您可以将 divert 配置为:
-
将
anycast
或multicast
路由类型应用到消息 - 条带 (即删除)现有路由类型
- 传递 (即保留)现有路由类型
-
将
当消息已设置了路由类型时,路由类型的控制很有用,但您想要将消息分解成使用不同的路由类型的地址。例如,代理无法将 anycast
路由类型的消息路由到一个使用 multicast
的队列,除非您将 divert 的 routing-type
参数设置为 MULTICAST
。divert 的 routing-type
参数的有效值为 ANYCAST
、MULTICAST
、PASS
和 STRIP
。默认值为 STRIP
。
- exclusive
-
指定 divert 是否为 exclusive (将属性设置为
true
)还是非独占(将属性设置为false
)。
以下小节显示了 exclusive 和 non-clusive diverts 的配置示例。
12.2.1. 排除 divert 示例
下面是一个排除 divert 的示例配置。排除 divert 将原始配置的地址的所有匹配消息复制到新地址。匹配消息不会路由到原始地址。
<divert name="prices-divert"> <address>priceUpdates</address> <forwarding-address>priceForwarding</forwarding-address> <filter string="office='New York'"/> <exclusive>true</exclusive> </divert>
在前面的示例中,您定义了一个名为 price-divert
的 divert,它将发送到 priceUpdates
地址的任何消息转到另外一个本地地址 priceForwarding
。您还指定消息过滤器字符串。只有带有 office
属性以及值为 New York
的消息才会被 divert。所有其他消息都路由到其原始地址。最后,您可以指定 divert 是独占的。
12.2.2. Non-exclusive divert 示例
下面是一个非独占区分器的示例配置。在非独占区分程序中,消息将继续进入其原始地址,代理也会将消息的副本发送到指定的转发地址。因此,非独占区分是分割消息流的方法。
<divert name="order-divert"> <address>orders</address> <forwarding-address>spyTopic</forwarding-address> <exclusive>false</exclusive> </divert>
在上例中,您定义了一个名为 order-divert
的 divert,它会获取发送到地址 orders
的每个消息的副本,并将其发送到名为 spyTopic
的本地地址。您还可以指定 divert 不是排他的。
其他资源
有关使用 exclusive 和 non-clusive diverts 和桥接将消息转发到另一个代理的详细示例,请参阅 Divert Example (external)。