코딩공부/기타

IgniteFuture을 CompletableFuture로 변환

내일의기대 2024. 1. 21. 22:13

 

Spring Webflux 코딩중 IgniteFuture를 CompleteFuture 객체로 변환해야하는 상황을 만났습니다.
인터넷 서핑을 하던 도중 GridGain 발표자료에서 객체 변환 방법을 설명하고 있어서 정리하였습니다.

static <V> CompletableFuture<V> toCompletableFuture(IgniteFuture<V> igniteFuture) { 
	CompletableFuture<V> future = new CompletableFuture<V>(); 
	//igniteFuture 객체에 callback을 등록(listen)합니다.
	igniteFuture.listen(
		fut->{ 
			try{ 
           		//callback 결과로 도출된 값을 얻습니다.
          		V res = fut.get(); 
            	//CompletableFuture에 도출된 값을 complete으로 넘겨줍니다.
            	future.complete(res); 
			}catch(Exception e){
				//예외 발생시 completeExceptionally를 호출하여 예외발생을 등록합니다.
				future.completeExceptionally(e); 
			} 
		}
	); 
	return future; 
}