Mule 动态添加Endpoint(二)

本文提供了一个在Mule环境下动态修改Outbound Router的endpoint的示例,通过改变文件路径实现实时文件移动操作。代码展示了如何在运行时创建、复制并更新endpoint,以及如何将新的endpoint添加到Outbound Router中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这次是在Outbound中动态修改endpoint。以文件的移动为例。上代码:

 file-config.xml

 

<? xml version="1.0" encoding="UTF-8" ?>
< mule  xmlns ="http://www.mulesource.org/schema/mule/core/2.2"
      xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
      xmlns:file
="http://www.mulesource.org/schema/mule/file/2.2"
      xsi:schemaLocation
="
    http://www.mulesource.org/schema/mule/core/2.2 http://www.mulesource.org/schema/mule/core/2.2/mule.xsd
    http://www.mulesource.org/schema/mule/file/2.2 http://www.mulesource.org/schema/mule/file/2.2/mule-file.xsd
    "
>

    
< file:connector  name ="fileConnector"  streaming ="false"  pollingFrequency ="1000"  autoDelete ="true"
                    outputPattern
="#[ORIGINALNAME]" />

    
< endpoint  name ="origin"  address ="file:///D:/testDir/1"  connector-ref ="fileConnector" />
    
< endpoint  name ="target"  address ="file:///D:/testDir/3"  connector-ref ="fileConnector" />

    
< model  name ="testModel" >
        
< service  name ="testService" >
            
< inbound >
                
< file:inbound-endpoint  ref ="origin" />
            
</ inbound >
            
< outbound >
                
< pass-through-router >
                    
< file:outbound-endpoint  ref ="target" />
                
</ pass-through-router >
            
</ outbound >
        
</ service >
    
</ model >
</ mule >

 

 FileClient.java

 1  import  org.mule.api.MuleContext;
 2  import  org.mule.api.endpoint.EndpointBuilder;
 3  import  org.mule.api.routing.OutboundRouter;
 4  import  org.mule.api.service.Service;
 5  import  org.mule.context.DefaultMuleContextFactory;
 6  import  org.mule.endpoint.URIBuilder;
 7 
 8  /**
 9   * @Class name:    FileClient
10   *
11   * Dynamic add endpoint for OutboundRouter.
12   *  @author : youfeng
13   * @modified: 8/5/11
14    */
15  public   class  FileClient {
16 
17       public   static   void  main(String[] args)  throws  Throwable {
18           try  {
19               // start the mule server
20              MuleContext muleContext;
21              muleContext  =   new  DefaultMuleContextFactory().createMuleContext( " file-config.xml " );
22              muleContext.start();
23 
24               // Get the target Service
25              Service service  =  muleContext.getRegistry().lookupService( " testService " );
26 
27               // Clone a Global service
28              EndpointBuilder endpointBuilder  =  muleContext.getRegistry().lookupEndpointBuilder( " origin " );
29              EndpointBuilder cloneEndpoint  =  (EndpointBuilder) endpointBuilder.clone();
30 
31               // Rewrite the info for clone endpoint
32              cloneEndpoint.setURIBuilder( new  URIBuilder( " file:///D:/testDir/4 " ));
33              muleContext.getRegistry().registerEndpointBuilder( " targetDir2 " , cloneEndpoint);
34 
35               // Get the OutboundRouter, clear the message and add the new endpoint
36              OutboundRouter outboundRouter  =  ((OutboundRouter) service.getOutboundRouter().getRouters().get( 0 ));
37              outboundRouter.getEndpoints().clear();
38              outboundRouter.addEndpoint(cloneEndpoint.buildOutboundEndpoint());
39 
40               // restart the service
41              service.stop();
42              service.start();
43 
44 
45          }  catch  (Exception e) {
46              e.printStackTrace();
47          }
48      }
49  } 

示例代码下载:

 Mule_Dynamic_Endpoint

转载于:https://www.cnblogs.com/zhuyoufeng/archive/2011/08/05/2128518.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值