이벤트가 버스에 입장 한 순서를 유지하고 싶습니다. 예를 들어 event1이면 event2로, 버스에 입장하면 가입 한 액터가 순서대로 이벤트를 가져옵니다.Akka의 이벤트 버스가 메시지 순서를 보장합니까?
이러한 순서가 클러스터 된 노드와 단일 노드 액터 시스템에서 모두 보장되는지 의문입니다.
이벤트가 버스에 입장 한 순서를 유지하고 싶습니다. 예를 들어 event1이면 event2로, 버스에 입장하면 가입 한 액터가 순서대로 이벤트를 가져옵니다.Akka의 이벤트 버스가 메시지 순서를 보장합니까?
이러한 순서가 클러스터 된 노드와 단일 노드 액터 시스템에서 모두 보장되는지 의문입니다.
액터 시스템에서 이벤트 스트림을 사용하는 경우 (system.eventStream
) 단일 스레드가 게시되고 있음을 보증 할 수있는 경우 순서가 유지됩니다. 이벤트 버스 (system.eventStream
에 묶인 종류)의 서브 채널 분류 맛은 정말 간단합니다. 가입 액터 목록에는 기본적으로 클래스 유형의 Map
이 있습니다. 이벤트가 게시되면 Map
(있는 경우)에서 일치하는 구독자 목록을 가져온 다음 각자에게 메시지를 보냅니다. 따라서 하나의 스레드 만 publish
을 호출하는 경우 event2로 이동하기 전에 event1을 게시하여 모든 구독자의 사서함에 전달해야합니다. 액터는 메시지가 수신 된 순서대로 사서함을 처리합니다 (사용자 지정 PriorityMailbox
지정을 사용하지 않는 한).
물론 여러 개의 스레드가있는 경우 스레드 1이 먼저 게시를 시작할 수 있지만 스레드 2는 먼저 순서가 잘못되어 있다고 생각할 수 있으므로 완료 처리 할 수 없습니다.
단일 스레드에서 추가한다고 가정합니다. 그렇지 않으면 모든 청취자가 동일한 순서로 표시된다는 것입니다. –
@dds이 섹션은 배우들과의 의사 소통을 말하는 것이지만, 나는 이벤트 버스를 궁금해합니다. –
@PeterLawrey 예, 단일 스레드 게시자 –