WSO2 ESBスケジュールタスクを使用して外部システムからデータを取得しました。タスクは5秒ごとにプロキシサービスを呼び出します。私のプロキシサービスでは、プロパティ名「startTime」と「endTime」を使用しました。つまり、「startTime」から「endTime」にデータをフェッチしたいということです。 "startTime"と "endTime"は、タスクコールごとに5秒増やす必要があります。 しかし、ESBはすべてのタスクコールの間にこれらのプロパティ(startTimeとendTime)を保存できないようです。私は「のstartTime」を得ることができますが、それは同じ値のまますべてのタスクコール間でプロパティ値を予約する方法
importPackage(Packages.org.apache.synapse.config);
var id = mc.getProperty("id");
var res = "conf/data_task/"+id ;
var startTimeInReg = mc.getProperty("_endTime");
mc.getConfiguration().getRegistry().updateResource(res+"/startTime", startTimeInReg.toString());
し、それを
<property expression="get-property('registry', fn:concat('conf/data_task/',get-property('id'),'/startTime'))"
name="startTimeInReg" scope="default" type="STRING"/>
を取得し、私は後のことがわかった:私は「のstartTime」を書くためにスクリプトを使用してみてください2回または3回のスケジュール・タスク・コール(15秒を超えることがあります)、startTimeの値が変更されます。
私はこれがESBキャッシングによって引き起こされたと考えていますが、updateResourceメソッドが呼び出された直後にstartTime値の変更をコミットできる方法はありますか。または、この問題をどのように解決できるか。
これは2番目のソリューションで動作します。しかし、最初の解決策はまだ数秒後に変更プロパティを取得できませんが、それはESBのキャッシュメカニズムのためですか? – yeahliu
私は第1の解決方法を使ってデータをキャッシュに入れます。したがって、あなたは私に、変更が即時利用可能ではないことを発見しました... –