Page History
Info | ||
---|---|---|
Future(미래)와 Promice(약속)은 비동기처리에 있어서 중요한 개념입니다. 미래에는 블록킹이 없기때문에 어느시점 사용가능 해지는 함수의 결과(성공또는 실패등을) 를 담을수 있는 용기라고 보면 됩니다. Scala에서는 이러한 기능을 위해 동일한 키워드를 지원하며 일반적으로 결과에대한 비동기적인 핸들이라고 이해하시면 되겠으며 C#/JAVA에서도 유사하게 활용이 가능합니다유사한 모델을 가지고 있습니다. 관련 참고 원문: 이러한 컨셉은 Java(8)/.net(4.5)의 경우 최신 버젼에서 지원하는것으로 보아 scala에서 영향을 준것으로 보입니다.
|
...
Code Block | ||||
---|---|---|---|---|
| ||||
def sendTokafka(recode: ProducerRecod): Futrure[RecordMetadata] = {
val promise : Promise[[RecordMetadata]] = Promise[RocordMetadata]() //RecordMetadata 타잎의 값을 돌려주는 약속을 만든다.
val future:Future[RecordMetadata] = promise.future //future에 대한 참조를 가져온다
val callback = new CallBack(){ //송신성공시 카프카 콜백
def onCompletition(metadata: RecordMetadata, e:Exception): Unit={
if(e != null ) promise.failure(e) //오류기록
else promise.success(metadata) //성공기록
}
}
producer.send(record,callback)
future
} |
...