public interface MyEvent {
void handleEvent(String message);
}
public class EventPublisher {
private EventAdmin eventAdmin;
public void publishEvent(String message) {
Dictionary<String, Object> properties = new Hashtable<>();
properties.put("message", message);
eventAdmin.sendEvent(new Event("my/event", properties));
}
}
@Component
public class EventListener implements MyEvent {
@Override
public void handleEvent(String message) {
System.out.println("Received event: " + message);
}
}
@Component
public class Activator {
private EventAdmin eventAdmin;
@Reference
public void setEventAdmin(EventAdmin eventAdmin) {
this.eventAdmin = eventAdmin;
Dictionary<String, Object> properties = new Hashtable<>();
properties.put(EventConstants.EVENT_TOPIC, "my/event");
eventAdmin.subscribe(this, "(message=*)", properties);
}
@Activate
public void start(BundleContext context) {
}
}