Если вы используете поток событий в системе актеров (system.eventStream
), и если вы можете гарантировать публикацию одной нити, тогда да, заказ будет сохранен. Классификационный атрибут подканала шины событий (вид, привязанный к system.eventStream
), действительно прост. Существует Map
в основном типа класса для списка подписчиков. Когда событие публикуется, он получает список подписчиков из Map
(если есть), а затем отправляет сообщение каждому из них. Поэтому, если только один поток вызывал publish
, ему нужно было закончить публикацию event1 (и, таким образом, доставить его в почтовые ящики всех подписчиков), прежде чем перейти к событию2. Актеры обрабатывают свои почтовые ящики в том порядке, в котором были получены сообщения (если вы не используете пользовательский PriorityMailbox
impl), поэтому сначала сначала.
Теперь, конечно, если у вас было несколько потоков, я не могу гарантировать это при обработке заказа, так как thread1 может начать публикацию сначала, но поток 2 может завершить его сначала, что приведет к тому, что вы считаете не по порядку.
Я предполагаю, что вы добавляете их из одного потока, иначе все, что вы можете гарантировать, это то, что все слушатели видят тот же порядок. –
@dds В этом разделе речь идет об общении с актерами, но Im интересно о шине событий. –
@PeterLawrey да, издатель одного потока –