私のプロジェクトでは、同じ入力パラメータを持つ2つのインバウンドゲートウェイがありますが、応答は異なります。各ゲートウェイは異なるXMLで宣言されて呼び出されます。問題は、gateway1を呼び出すと、xml1の代わりにxml2に行くということです。 これをどのように処理する必要がありますか?私は別のシステムからゲートウェイを呼び出すXML2バネ統合 - 複数のゲートウェイ
<int:gateway id="invoke1" default-request-channel="requestChannel2" default-reply-channel="finalResult"
service-interface="<class name>" error-channel="errorChannel" default-reply-timeout="6000"/>
<int:channel id="errorChannel"/>
でXML1
<int:gateway id="invoke" default-request-channel="requestChannel1" default-reply-channel="finalResult"
service-interface="<class name>" error-channel="errorChannel" default-reply-timeout="6000"/>
<int:channel id="errorChannel"/>
で同じインターフェース
public interface MessageGateway {
@Gateway(requestChannel="requestChannel1")
@Payload("#args")
public Response1 invoke(Bean bean) throws Exception;
@Gateway(requestChannel="requestChannel2")
@Payload("#args")
public List<Response2> invoke2(Bean bean) throws Exception;
}
に2つのゲートウェイを有します。だから私はゲートウェイインターフェイスをオートワイヤーし、メソッドを呼び出します。ゲイリーさんのコメントを1として
オートワイヤリング
@Autowired
private MessageGateway gateway;
//calling
gateway.invoke(bean);
両方のゲートウェイのためのあなたのオートワイヤリングを表示します。 –
混乱を避けるために、異なるインタフェースにメソッドを配置する方が良いでしょう。この構成では、両方のゲートウェイに2つの方法があります。 –
autowiringが失敗するはずです - あなたは2つのbean 'invoke'と' invoke1'を持っています。 Springはどのように自動配線のためのものを選択するか分からない。あなたはただ一つの ' 'か、別々のインタフェースにメソッドを置く必要があります。 –