@Override public void removeStream(StreamDefinition streamDefinition, Credentials credentials) { topicStreamDefinitionMap.remove(createTopic(streamDefinition)); Map<String, BrokerListener> brokerListeners = topicBrokerListenerMap.get(createTopic(streamDefinition)); if (brokerListeners != null) { for (BrokerListener brokerListener : brokerListeners.values()) { try { brokerListener.removeEventDefinition(streamDefinition); } catch (BrokerEventProcessingException e) { log.error( "Cannot remove Stream Definition from a brokerListener subscribed to " + streamDefinition.getStreamId(), e); } } } streamIdBrokerListenerMap.remove(streamDefinition.getStreamId()); }
@Override public void receive(List<Event> events, Credentials credentials) { for (Event event : events) { Map<String, BrokerListener> brokerListeners = streamIdBrokerListenerMap.get(event.getStreamId()); if (brokerListeners == null) { try { definedStream( BrokerServiceValueHolder.getDataBridgeSubscriberService() .getStreamDefinition(credentials, event.getStreamId()), credentials); } catch (StreamDefinitionNotFoundException e) { log.error("No Stream definition store found for the event " + event.getStreamId(), e); return; } catch (StreamDefinitionStoreException e) { log.error( "No Stream definition store found when checking stream definition for " + event.getStreamId(), e); return; } brokerListeners = streamIdBrokerListenerMap.get(event.getStreamId()); if (brokerListeners == null) { log.error("No broker listeners for " + event.getStreamId()); return; } } for (BrokerListener brokerListener : brokerListeners.values()) { try { brokerListener.onEvent(event); } catch (BrokerEventProcessingException e) { log.error( "Cannot send event to a brokerListener subscribed to " + event.getStreamId(), e); } } } }
@Override public void definedStream(StreamDefinition streamDefinition, Credentials credentials) { topicStreamDefinitionMap.put(createTopic(streamDefinition), streamDefinition); Map<String, BrokerListener> brokerListeners = topicBrokerListenerMap.get(createTopic(streamDefinition)); if (brokerListeners == null) { brokerListeners = new HashMap<String, BrokerListener>(); topicBrokerListenerMap.put(createTopic(streamDefinition), brokerListeners); } // inputTypeDefMap.put(streamDefinition.getName(), streamDefinition); for (BrokerListener brokerListener : brokerListeners.values()) { try { brokerListener.addEventDefinition(streamDefinition); } catch (BrokerEventProcessingException e) { log.error( "Cannot send Stream Definition to a brokerListener subscribed to " + streamDefinition.getStreamId(), e); } } streamIdBrokerListenerMap.put( streamDefinition.getStreamId(), topicBrokerListenerMap.get(createTopic(streamDefinition))); }
public String subscribe( String topicName, BrokerListener brokerListener, BrokerConfiguration brokerConfiguration, AxisConfiguration axisConfiguration) throws BrokerEventProcessingException { String subscriptionId = UUID.randomUUID().toString(); if (!topicBrokerListenerMap.containsKey(topicName)) { Map<String, BrokerListener> map = new HashMap<String, BrokerListener>(); map.put(subscriptionId, brokerListener); topicBrokerListenerMap.put(topicName, map); } else { topicBrokerListenerMap.get(topicName).put(subscriptionId, brokerListener); StreamDefinition streamDefinition = topicStreamDefinitionMap.get(topicName); if (streamDefinition != null) { brokerListener.addEventDefinition(streamDefinition); } } return subscriptionId; }