骡子:多播路由器和静态接收者列表路由器之间有什么区别?

时间:2010-08-24 21:15:25

标签: router mule transport

我真的看不到多播路由器和静态接收者列表路由器之间的区别。为什么我会使用一个而不是另一个?

根据Mule-2.x user guide

  

收件人列表

     

可以使用收件人列表路由器   将同一事件发送到多个   端点在同一端点或端点   实现路由滑动行为在哪里   该活动的下一个目的地是   根据事件属性确定   或有效载荷。骡子提供了一个摘要   收件人列表实现   org.mule.routing.outbound.AbstractRecipientList   它提供了一个线程安全的基础   专业实施。骡子也   提供静态收件人列表   获取已配置的端点列表   从当前事件或静态   在端点上声明。

 <outbound>
     <static-recipient-list-router>
        <payload-type-filter expectedType="javax.jms.Message"/>
        <recipients>
                <spring:value="jms://orders.queue"/>
                <spring:value="jms://tracking.queue"/>
        </recipients>
     </static-recipient-list-router> </outbound>
  

组播路由器

     

多播路由器可用于   发送多个相同的事件   端点。使用此路由器时要小心   必须采取配置正确   终点上的变形金刚   处理事件源类型。

 <outbound>
     <multicasting-router>
        <jms:endpoint queue="test.queue"
 transformer-refs="StringToJmsMessage"/>
        <http:endpoint host="10.192.111.11"
 transformer-refs="StringToHttpClientRequest"/>
        <tcp:endpoint host="10.192.111.12"
 transformer-refs="StringToByteArray"/>
        <payload-type-filter expectedType="java.lang.String"/>
     </multicasting-router> </outbound>
  

请记住,应该注意   确保邮件被路由   转换为格式   终点了解。

2 个答案:

答案 0 :(得分:3)

直接从马的嘴里(Mule in Action,David Dossot,John D'Emic,p.98..100)

  

static-recipient-list路由器允许您同时向多个端点发送相同的消息。当每个端点使用相同的传输时,您通常会使用静态收件人列表。 VM和JMS端点通常就是这种情况。

     

使用相同的传输将相同的消息发送到端点时使用静态收件人列表

     

多播路由器类似于静态收件人列表,因为它同时在一组出站端点上发送相同的消息。不同之处在于,当端点列表包含不同类型的传输时,将使用多播路由器。

     

使用不同的传输方式向端点发送相同的消息时使用多播路由器

答案 1 :(得分:0)

这就是我理解这些:

static-recipient-list路由器将按照列出的顺序将有效负载发送给每个收件人。这使您能够在继续下一个端点之前修改有效负载。这也使您能够在发生错误时停止处理。

多播路由器同时向所有端点发送相同的有效负载。您将无法更改每个端点的有效负载。如果其中一个端点发生故障,您将无法阻止其他端点处理。