2016-12-16 4 views
-1

実行時に管理されるRouteBuilderがあります。クライアントに応答を送信せずにエラーが発生した場合、クライアントをルートから切断したい。私はまた、全体のプロセスを通してそれをルーティングする必要があります。私のルートを止めることなくクライアントを切断するにはどうすればよいですか?どんな助けもありがとう。Apache Camelがエラー時にルートから切断してルーティングを続ける

@Override 
public void configure() throws Exception { 

    onException(Exception.class) 
    .handled(true) 
    .process(new Processor() { 

     @Override 
     public void process(Exchange exchange) throws Exception { 
      Log.error(String.format(Constants.ERROR_ROUTING_TO, endPointFrom.toUrl(), endPointTo.toUrl(), 
       exchange.getProperty(Exchange.EXCEPTION_CAUGHT, Exception.class))); 
      //TODO I WANT TO DISCONNECT FROM ROUTE HERE 
     } 

    }); 

    from(endPointFrom.toUrl()) 
    .routeId(endPointFrom.getId()) 
    .description(endPointFrom.toString()) 
    .process(new Processor() { 

     @Override 
     public void process(Exchange exchange) throws Exception { 


     } 
    }) 
    .to(endPointTo.toUrl()); 

} 
+0

使用しているコンポーネント/クライアント、およびそれが可能かどうかによって異なります。あなたは何が使用されているかについてはあまり教えていない。 –

+0

私はこれを忘れてしまった、私は桟橋のコンポーネントを使用する –

答えて

0

私は、為替変動のレスポンスボディにヌルを設定することで、私の問題を解決し、そのApacheのキャメルは、応答メッセージを送信せずにクライアントを切断します。

@Override 
public void configure() throws Exception { 

    onException(Exception.class) 
    .handled(true) 
    .process(new Processor() { 

     @Override 
     public void process(Exchange exchange) throws Exception { 
      Log.error(String.format(Constants.ERROR_ROUTING_TO, endPointFrom.toUrl(), endPointTo.toUrl(), 
       exchange.getProperty(Exchange.EXCEPTION_CAUGHT, Exception.class))); 
       exchange.getOut().setBody(null); 
     } 

    }); 

    from(endPointFrom.toUrl()) 
    .routeId(endPointFrom.getId()) 
    .description(endPointFrom.toString()) 
    .process(new Processor() { 

     @Override 
     public void process(Exchange exchange) throws Exception { 

     } 

    }) 
    .to(endPointTo.toUrl()); 

} 
関連する問題