2011-08-10 3 views
6

J'ai une question générale concernant l'utilisation du service OSGi EventAdmin. Je l'utilise actuellement dans un environnement où potentiellement des milliers d'événements peuvent être générés par seconde. Ma crainte est que le service EventAdmin puisse être un goulot d'étranglement. Les premiers résultats obtenus par mon profileur semblent confirmer cela. Les questions que j'ai sont:Quand utiliser OSGi EventAdmin et quand?

  1. Existe-t-il une règle générale pour utiliser le service EventAdmin?
  2. En quoi les méthodes sendEvent et postEvent diffèrent-elles en termes de performances?
  3. Existe-t-il un conteneur OSGi particulier dont l'implémentation EventAdmin est peu performante?

Merci d'avance pour votre soutien!

Cheers, Georg

Répondre

6

Avez-vous plus d'informations sur le goulot d'étranglement que vous voyez?

Nous avons une mise à jour à venir pour la spécification Event Admin (voir RFC 157 dans [1]) pour résoudre certains problèmes de performances. Mais ce travail n'est pas encore terminé.

L'événement d'envoi est un envoi synchrone, de sorte que le thread appelant se bloque jusqu'à ce que tous les écouteurs aient été notifiés. La plupart des implémentations utilisent le thread appelant. L'événement post ne bloque pas l'appelant. Il met en attente le travail pour un autre thread pour livrer l'événement. La spécification d'administration d'événement actuelle nécessite la commande d'événements asynchrones, ce qui peut entraîner des retards si la commande n'est pas requise. La RFC 157 permet de ne pas exiger cette commande.

Je n'ai pas de données sur si une implémentation avant meilleure ou pire qu'une autre.

[1] http://www.osgi.org/Download/File?url=/download/osgi-4.3-early-draft2.pdf

+0

J'ai maintenant testé notre code à la fois Felix et les conteneurs OSGi Equinox. De ce que je vois, il semble que Felix semble être plus performant que Equinox en ce qui concerne la gestion des événements. Il est également de loin plus efficace que Equinox. Je pense que je vais rester avec Felix pour le moment. – BumbleGee

Questions connexes