2014-10-07 17 views
7

Tôi muốn giữ lại thứ tự các sự kiện đã nhập vào xe buýt. Ví dụ, nếu event1 sau đó event2 nơi nhập vào xe buýt sau đó một diễn viên đã đăng ký sẽ nhận được chúng theo thứ tự đó.Đơn đặt hàng tin nhắn có đảm bảo cho xe buýt của Akka không?

Câu hỏi đặt ra là nếu lệnh đó được đảm bảo, cả trên hệ thống diễn viên nhóm và trên một nút.

+0

Tôi giả sử bạn đang thêm chúng từ một chuỗi duy nhất, nếu không tất cả những gì bạn có thể đảm bảo là tất cả người nghe đều thấy cùng một thứ tự. –

+0

@dds phần này là đề cập đến các diễn viên truyền thông, nhưng Im tự hỏi xe buýt sự kiện. –

+1

@PeterLawrey yes, một nhà xuất bản chủ đề duy nhất –

Trả lời

3

Nếu bạn đang sử dụng luồng sự kiện trên hệ thống tác nhân (system.eventStream) và nếu bạn có thể đảm bảo một chuỗi đang xuất bản, thì có, thứ tự sẽ được giữ nguyên. Các phân loại subchannel hương vị của xe buýt sự kiện (loại gắn liền với system.eventStream) là thực sự đơn giản. Có một loại Map về loại cơ bản cho một danh sách các tác nhân đăng ký. Khi một sự kiện được xuất bản, nó sẽ nhận được danh sách phù hợp của các thuê bao từ Map (nếu có) và sau đó gửi tin nhắn cho mỗi người trong số họ. Vì vậy, nếu chỉ có một chủ đề được gọi là publish, sau đó nó sẽ cần phải hoàn thành xuất bản event1 (và do đó cung cấp nó vào hộp thư của tất cả các thuê bao) trước khi chuyển sang event2. Các diễn viên xử lý hộp thư của họ theo thứ tự mà các tin nhắn đã được nhận (trừ khi bạn đang sử dụng một tùy chỉnh PriorityMailbox impl), vì vậy đầu tiên trong đầu tiên ra ngoài. Bây giờ tất nhiên nếu bạn có nhiều chủ đề, tôi không thể đảm bảo điều này theo thứ tự xử lý như thread1 có thể bắt đầu xuất bản đầu tiên, nhưng chủ đề 2 có thể hoàn thành nó đầu tiên dẫn đến những gì bạn sẽ xem xét ra khỏi trật tự.

Các vấn đề liên quan