Dies ist eine sehr allgemeine Frage zu EventBus. Zeigt der EventBus ein FIFO- oder LIFO-Verhalten? Ich verwende den EventBus als "Warteschlangen" -Mechanismus für Java-Ereignisse und sehe das LIFO-Verhalten, wenn ein einzelner Publisher Ereignisse schneller an den EventBus sendet, als der Abonnent verarbeiten kann.Guava EventBus - FIFO oder LIFO?
Antwort
EventBus doc sagt, dass die Nachrichten an alle Handler gesendet werden, aber es gibt nichts über ihre Reihenfolge. Ich wette also nicht, dass die spezifische Reihenfolge erhalten bleibt. Auch wenn jetzt die Bestellung ohne explizite Information in der Dokumentation erhalten bleibt, kann sich dies in Zukunft ändern, also sollten Sie sich nicht auf diesen Verdacht verlassen.
Insbesondere, wenn Sie eine asynchrone Implementierung verwenden, dann haben Sie sicherlich keine Garantie für die Bestellung.
Wenn Sie einige Nachrichten senden und ihre Bestellung behalten möchten, können Sie andere Lösungen verwenden, die Garantie wie Apache Kafka garantieren.
danke für die Antwort. –
@annadobrowolska - Im Zusammenhang mit dieser Frage versuche ich, die Unterschiede in den Event-Bus-Implementierungen mit Guava Eventbus und Kafka zu verstehen. Lassen Sie mich wissen, wenn Sie Links/Gedanken haben. Vielen Dank –
- 1. LinkedHashMap LIFO oder FIFO?
- 2. Guava EventBus Komponententests
- 3. Guava Eventbus funktioniert nicht
- 4. Guava EventBus Dispatching
- 5. Guava EventBus + Hazelcast Spring config
- 6. Unterschiede zwischen Greenrobot EventBus und Guava des EventBus
- 7. Generisches Ereignis an Guava EventBus übergeben?
- 8. ExecutorService: FIFO Bestellung von Schlüsseln
- 9. FIFO-basierte Queue-Implementierungen?
- 10. Java Collections (LIFO Structure)
- 11. ResultReceiver, Brodcast/lokal Brodcast, Messenger oder Eventbus?
- 12. NSOperationQueue als LIFO-Stack verwenden?
- 13. AndroidAnnotations und EventBus
- 14. RxJava als Eventbus?
- 15. Listening EventBus in Jython
- 16. EventBus 3.0 registerSticky veraltet
- 17. versuchen, FIFO-Warteschlangensystemaufruf hinzuzufügen
- 18. Guava Funktionsargumente
- 19. Otto/EventBus über mehrere Prozesse
- 20. Fifo-Datei Windows Beispiel
- 21. NSOperationQueue serielle FIFO-Warteschlange
- 22. Golang Fifo gepufferter Kanal
- 23. Fifo wurde nie erstellt
- 24. Ist Javascript Event Queue ein einfacher FIFO oder nicht?
- 25. FIFO Karte mit begrenzten Elementen
- 26. EventBus, registrieren und registrierenSticky-Methode
- 27. Ein EventBus-Framework für Android
- 28. EventBus verwenden, Speicher und Architektur
- 29. Simple EventBus - Keine Abonnenten Registriert
- 30. Listen Fifo und Socket-Dateien
Bitte seien Sie detaillierter über die Umstände, die Sie sehen. –
Dies sind die 3 Komponenten, die ich habe - einfacher Event-Bus, ein Herausgeber, der die Ereignisse veröffentlicht, die den aktuellen Zeitstempel enthalten, und einen Abonnenten. Der Herausgeber erstellt das Ereignis mit dem aktuellen Zeitstempel und stellt es dann auf den Ereignisbus, und die Abonnenten-Ereignisbehandlungsfunktion druckt nur den Zeitstempel des Ereignisses. Was ich sehe ist, dass Zeitstempel in umgekehrter Reihenfolge gedruckt werden. –
Beschreiben Sie Ihren Code nicht. Poste ein minimales Beispiel, das das Problem reproduziert. –