Event-Channels sind Objekte, die zur Entkopplung der Kommunikation zwischen Supplier- und Consumer-Objekten eingesetzt werden. Supplier versenden Ereignismeldungen an einen Event-Channel, der sie wiederum an Consumer weiterleitet. Der Event-Channel selbst hat damit sowohl die Rolle eines Consumers als auch eines Suppliers.
Über einen Event-Channel können beliebig viele Supplier und Consumer ohne direkte Interaktion kommunizieren. Für die Kommunikation zwischen einem Supplier und einem Event-Channel bzw. einem Consumer und einem Event-Channel kann das Push-Modell oder das Pull-Modell angewendet werden.
Die IDL-Definition eines Event-Channels besteht aus folgenden Methoden:
interface EventChannel { ConsumerAdmin for_consumers(); SupplierAdmin for_suppliers(); void destroy(); };Die for_consumers-Methode liefert ein ConsumerAdmin-Objekt. Dieses Objekt kann von Consumern verwendet werden, um sich selbst beim Event-Channel zu registrieren. Die Klasse ConsumerAdmin hat folgende IDL-Definition:
interface ConsumerAdmin { ProxyPushSupplier obtain_push_supplier(); ProxyPullSupplier obtain_pull_supplier(); };Die Methode obtain_pull_supplier liefert ein Proxy-Objekt für einen PullSupplier (der eigentliche Supplier ist der Event-Channel). Von diesem Objekt kann der Consumer durch Aufruf der pull-Methode die Übermittlung einer Ereignismeldung anfordern.
Analog erfolgt die Registrierung von Suppliern beim Event-Channel. Die Methode destroy des Event-Channels dient zum Zerstören des Objekts.
In einer CORBA-Umgebung können beliebig viele Event-Channel-Objekte existieren. Die Hauptfunktion des Event-Channels ist die Entkopplung von der direkten Interaktion zwischen Supplier und Consumer. Weitere Funktionalität, wie z.B. Filtern oder Speichern von Ereignismeldungen, ist implementierungsabhängig und wird im Event-Service nicht spezifiziert. Es werden nur die nach außen sichtbaren Schnittstellen eines Event-Channel-Objekts definiert.