0
私はBlockingQueueを使用してプロデューサコンシューマシナリオを実装しています。プロデューサコンシューマシナリオは、実行が完了するまでキューからの読み取りを中止します。
@Override
public void run() {
try {
Message msg;
System.out.println("Consumer started");
//consuming messages until exit message is received
while(!(msg=queue.take()).getMsg().equalsIgnoreCase("exit")) {
//
}
} catch (InterruptedException e) {
e.printStackTrace();
}
と私はキューから何かを得る場合は、以下のメソッドを呼び出すするつもりが、ここでの条件です:
これは私の消費者はメソッドを実行しています。私はこの方法の1つのisntanceを実行したい。私は、以下のメソッドからの戻り値を得るまで、キューから消費したくありません。
私はこれをwhileループにどのように入れているかのように苦労しています。
public boolean runStrategy(String msg) {
ExecutionContext executionContext = new ExecutionContext();
String[] filePathArray = msg.split("/");
String campaignForType = filePathArray[6];// .equals("Profiles")/events etc etc
if (campaignForType.equalsIgnoreCase("Profiles")) {
executionContext.setExecutionStrategy(new ProfileUploadExecutionStrategy());
return executionContext.executeCampaign(filePathArray, msg);
} else if (campaignForType.equalsIgnoreCase("Events")) {
/* executionContext.setExecutionStrategy(new EventExecutionStrategy());
executionContext.executeCampaign(filePathArray, msg.toString());*/
return true;
}
return true;
}