2017-07-03 15 views
0

私は新しいコネクタを開発しました。このコネクタは言うことができます、二つのパラメータを設定する必要があります。ミュールコネクタの設定には動的な属性が必要です

  • default_trip_timeout_milis
  • default_trip_threshold

enter image description here

に挑戦し、私は$ {myValue_a}と$ {myValue_a}を読みたいですAPIから、HTTP呼び出しを使用して、ではないファイルまたはインライン値から。

これはコネクタなので、コネクタを初期化する前にこのAPIコールをどこかで呼び出す必要があります。

FlowVarsはFlowで初期化されているためオプションではありません。これはMuleアプリのライフサイクル前に発生しています。

私の考えでは、それが任意のJavaベースのlibs使用して、ここでコネクタのinitある前に呼び出され、されますので、春の豆がInitialisable実装を作成することです(春RestTemplateを?)、APIを呼び出して値を取得し、それらを保存しますどこか(context?objectStore?)、コネクターはそれらにアクセスできます。

意味がありますか?他のアイデア?

ありがとうございます!

答えて

1

mmmスタートアップでプロパティを作成するクラスを作成し、このクラスではhttpリクエスト経由でAPIプロパティを取得できます。以下の例:

public class PropertyInit implements InitializingBean,FactoryBean { 

    private Properties props = new Properties(); 

    @Override 
    public Object getObject() throws Exception { 
     return props; 
    } 

    @Override 
    public Class getObjectType() { 
     return Properties.class; 
    } 
} 

今、あなたとこのプロパティのクラスをロードすることができるはずです。

<context:property-placeholder properties-ref="propertyInit"/> 

は、このアイデアのようにあなたを願っています。以前のプロジェクトでこのアプローチを使用しました。

+0

実際にはチャームのように機能しました。おかげで多くの仲間! – Marcos

1

私はあなたにこれを行うことについて強く警告したいと思います。このパスを辿ると、非常に奇妙な方法でアプリケーションが壊れる危険性があります。なぜなら、他のコンポーネントがこのコンポーネントに依存している場合、起動時に動的コンポーネントを使用しているため、コンポーネントを破損させてしまいます。プロパティを使用する代わりに動作します。

これは、プロパティを変更するたびに再作成するコンポーネントのプロキシであるプロキシパターンを使用する方法だと述べています。したがって、Circuit Breakerを拡張するクラスを作成する必要があります。このクラスは、プロパティが変更されるたびに再作成されるCircuit Breakerのインスタンスとカプセル化されます。これらのプロパティはプロキシクラスの外部で使用しないでください。起動時に他のコンポーネントがこれらのプロパティを読み取り、リフレッシュしない可能性があるため、これらのプロパティに直接的または間接的にアクセスするものは、初期化フェーズまたはアプリケーションが中断されます。

プロパティサーバーを持つことができるSpringCloudConfigを見てみると、すべてのアプリケーションが変更時にそれらのプロパティを実行時にホットリロードできます。 SpringCloudがまだサポートされている場合は、Muleでそのパスを取ることができるかどうかはわかりませんが、知っておくと良いことです。

+0

ありがとうございました。私はすべての可能な方法を調査します! – Marcos

関連する問題