Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Info

At-Least-Once Delivery - 적어도 메시지를 한번 보내려는 메카니즘으로 PersistenceActor와 결합하여

실패없는 메시지 전송 목표를 달성할수 있습니다. 적어도 한번 보내려는 메카니즘으로 인해

중복 메시지 발생할수 있음에 유의하여 작성 해보겠습니다.


(lightbulb) http://erlang.org/faq/academic.html#idp32880720 : 초창기에는 메시지 전송 보장을 위해 네트워크 에러를 포함하여

여러가지 에러를 캐치하여 재접속및 재선송 루틴으로 해결하려고 하였습니다. 하지만 이러한 전략은 대부분 실패를 하였고

최종 수신처가 확인해주는 방법이 보증을 할수 있는 가장 간단한 방법이며 언랭에서 도입되고 성공한 전송전략입니다.

...

Code Block
languagejava
themeEmacs
title의존설정(메이븐+akka conf)
collapsetrue
//메이븐 설정
		<dependency>
		  <groupId>com.typesafe.akka</groupId>
		  <artifactId>akka-persistence_2.12</artifactId>
		  <version>${akka.version}</version>
		</dependency>		  
		
		<dependency>
			<groupId>org.fusesource.leveldbjni</groupId>
  			<artifactId>leveldbjni-all</artifactId>
  			<version>1.8</version>  
		</dependency>




//Akka Persistence설정 : 다양한 복구옵션과 다양한 저장장치선택이 가능합니다. 여기서는 기본 local-disk 장치를 이용합니다.
//작동중에만 고성능으로 영속성을 사용한다고하면  akka.persistence.journal.inmem 로 설정만 교체하면 되며
//영구 저장은 스냅샷 전략을 통해 db에 저장이 가능합니다.
akka{
	extensions = [akka.persistence.Persistence]
	  persistence {	  
	    journal {
	      plugin = "akka.persistence.journal.leveldb"
	      auto-start-journals = ["akka.persistence.journal.leveldb"]
	    }
	    snapshot-store {
	      plugin = "akka.persistence.snapshot-store.local"
	      auto-start-snapshot-stores = ["akka.persistence.snapshot-store.local"]
	    }	
	  }	
}

...

Expand
title테스트결과

의도적으로 드랍한 메시지가 결국 성공됨을 확인할수가 있습니다.

drop msg for test:861
msg ok :872
drop msg for test:883
msg ok :894
drop msg for test:905
msg ok :916
drop msg for test:927
msg ok :938
drop msg for test:949
msg ok :9510
drop msg for test:861
msg ok :883
drop msg for test:905
msg ok :927
drop msg for test:949
msg ok :861
drop msg for test:905
msg ok :949
drop msg for test:905
msg ok :905