3

単純な動的ルーターを設定しました。

    public String slip(String body, @Header(Exchange.SLIP_ENDPOINT) String previous) {
                if (previous == null) {
                    return "mock:a";
                } 
                    else if (body.contains("status=2") ) {
                    return "mock:b";
                }
                    else if (body.contains("status=3") ) {
                    return "mock:c";
                }

                // no more so return null
                return null;
            }

モックa、b、cは、カスタムプロセッサを使用したルートです。

public void process(Exchange exchange) throws Exception {
        String str_request = "";
        String str_requestNew = "";

        str_request = (String) exchange.getIn().getBody();

        if(str_request.contains("status=1"))
            str_requestNew = "status=2";
    }
  1. JavaDSLを介してカスタムプロセッサのルート間のメッセージ本文を更新するにはどうすればよいですか。exchange.getOut()。setBody(newreq); ?

  2. 新しいプロデューサーを作成して、メッセージをダイナミックルーターに送り返す必要がありますか?ProducerTemplateテンプレート=exchange.getContext()。createProducerTemplate(); template.sendBody(myDynamicRouterEndpoint、newreq); または、方法1を介して行う場合、ルーターは新しい本体を取得しますか。

それとも、私のロジックに大きな欠陥がありますか?:)

4

1 に答える 1

3

1で説明したようにそれを行うことができます。

Beanコンポーネントを使用すると、さらに簡単になります。次に、本文を読み取って設定するためのプレーンJavaメソッドを使用できます。

public String doSomething(String body){}

これにより、パラメータに本文が含まれ、戻り値は新しい本文になります。これにより、BeanはCamelから独立します。

于 2012-04-04T05:35:36.210 に答える