WonNodeInfo wonNodeInfo = crawlWonNodes.get(event.getWonNodeUri()).getWonNodeInfo(); WonNodeEvent e = new WonNodeEvent(event.getWonNodeUri(), WonNodeEvent.STATUS.CONNECTED_TO_WON_NODE, wonNodeInfo); pubSubMediator.tell(new DistributedPubSubMediator.Publish(e.getClass().getName(), e), getSelf()); log.debug("Skip crawling won node with uri '{}'", event.getWonNodeUri()); WonNodeEvent e = new WonNodeEvent(event.getWonNodeUri(), WonNodeEvent.STATUS.SKIP_WON_NODE); pubSubMediator.tell(new DistributedPubSubMediator.Publish(e.getClass().getName(), e), getSelf()); return; pubSubMediator.tell(new DistributedPubSubMediator.Publish(e.getClass().getName(), e), getSelf()); return;
tryInterpretAsDirectPublication(command, publish -> { log.info("Publishing <{}> into cluster on topic <{}> with sendOneMessageToEachGroup=<{}>", publish.msg().getClass().getCanonicalName(), publish.topic(), publish.sendOneMessageToEachGroup()); pubSubMediator.tell(publish, responseCorrelationActor.get()); }, devOpsErrorResponse -> { pubSubMediator.tell(new Publish(topic, command), responseCorrelationActor.get());
long crawlDate = System.currentTimeMillis(); NeedEvent needEvent = new NeedEvent(uriMsg.getUri(), wonNodeUri, type, crawlDate, ds); pubSubMediator.tell(new DistributedPubSubMediator.Publish(needEvent.getClass().getName(), needEvent), getSelf());
log.debug("discovered new won node {}", msg.getWonNodeUri()); WonNodeEvent event = new WonNodeEvent(msg.getWonNodeUri(), WonNodeEvent.STATUS.NEW_WON_NODE_DISCOVERED); pubSubMediator.tell(new DistributedPubSubMediator.Publish(event.getClass().getName(), event), getSelf()); getContext().system().scheduler().scheduleOnce( RESCHEDULE_MESSAGE_DURATION, getSelf(), msg, getContext().dispatcher(), null);
pubSubMediator.tell(new DistributedPubSubMediator.Publish(event.getClass().getName(), event), getSelf()); } else if (methodName.equals(MSG_HEADER_METHODNAME_NEEDACTIVATED)) { event = new NeedEvent(needUri, wonNodeUri, NeedEvent.TYPE.ACTIVE, crawlDate, ds); pubSubMediator.tell(new DistributedPubSubMediator.Publish(event.getClass().getName(), event), getSelf()); } else if (methodName.equals(MSG_HEADER_METHODNAME_NEEDDEACTIVATED)) { event = new NeedEvent(needUri, wonNodeUri, NeedEvent.TYPE.INACTIVE, crawlDate, ds); pubSubMediator.tell(new DistributedPubSubMediator.Publish(event.getClass().getName(), event), getSelf()); } else { unhandled(message); resMsg.setSerializedResource(camelMsg.body().toString()); resMsg.setSerializationFormat(Lang.TRIG); pubSubMediator.tell(new DistributedPubSubMediator.Publish(resMsg.getClass().getName(), resMsg), getSelf()); return; } else {
if (!config.getCrawlWonNodes().contains(nodeInfo.getWonNodeURI())) { WonNodeEvent e = new WonNodeEvent(nodeInfo.getWonNodeURI(), WonNodeEvent.STATUS.NEW_WON_NODE_DISCOVERED); pubSubMediator.tell(new DistributedPubSubMediator.Publish(e.getClass().getName(), e), getSelf()); if (!crawlWonNodes.containsKey(nodeUri)) { WonNodeEvent e = new WonNodeEvent(nodeUri, WonNodeEvent.STATUS.NEW_WON_NODE_DISCOVERED); pubSubMediator.tell(new DistributedPubSubMediator.Publish(e.getClass().getName(), e), getSelf());
pubSubMediator.tell(new DistributedPubSubMediator.Publish(topic, command), responseCorrelationActor);
final boolean isGroupTopic = isGroupTopicValue != null && !"false".equalsIgnoreCase(isGroupTopicValue); onSuccess.accept(new Publish(topic.get(), jsonifiable, isGroupTopic)); } else { final String message =
@Override public void preStart() throws Exception { log.debug("EventstoreSingelton started with adress {}", getSelf().path()); try { Cluster cluster = Cluster.get(getContext().system()); cluster.subscribe(self(), ClusterEvent.MemberRemoved.class); cluster.subscribe(self(), ClusterEvent.ReachableMember.class); log.info("{} subscribes to cluster events", self()); } catch (ConfigurationException e) { } storage.open(); try { ActorRef mediator = DistributedPubSub.get(getContext().system()).mediator(); mediator.tell(new DistributedPubSubMediator.Publish(EventStore.EVENTSTOREMESSAGES, new NewEventstoreStarting()), self()); log.info("Sent message new eventstore starting"); } catch(ConfigurationException e){ log.info("No subscribe to eventstore messages in non cluster system"); } super.preStart(); }
/** * Ask for complete won node info of all known won nodes on the event bus. Do this to initiate the crawling process * again. Therefore clear the cache of crawled uris so that they can be crawled again. */ private void askWonNodeInfoForCrawling() { if (pendingMessages.size() > MIN_PENDING_MESSAGES_TO_SKIP_RECRAWLING) { log.warning("Skip crawling cylce since there are currently {} messages in the pending queue. Try to restart " + "crawling again in {} minutes", pendingMessages.size(), config.getRecrawlIntervalDuration().toMinutes()); return; } log.info("Start crawling process again. Clear the cached uris and crawling statistics"); doneMessages.clear(); failedMessages.clear(); pendingMessages.clear(); for (String wonNodeUri : crawlWonNodeUris) { log.info("ask for won node info of {}", wonNodeUri); WonNodeEvent event = new WonNodeEvent(wonNodeUri, WonNodeEvent.STATUS.GET_WON_NODE_INFO_FOR_CRAWLING); pubSubMediator.tell(new DistributedPubSubMediator.Publish(event.getClass().getName(), event), getSelf()); } }
private void publishEvent(final Event e) { pubSubMediator.tell(new DistributedPubSubMediator.Publish(e.getType(), e, true), getSelf()); }
private void notifySubscribers(final PolicyEvent event) { pubSubMediator.tell(new DistributedPubSubMediator.Publish(PolicyEvent.TYPE_PREFIX, event, true), getSelf()); }
private void notifySubscribers(final PolicyEvent event) { pubSubMediator.tell(new DistributedPubSubMediator.Publish(PolicyEvent.TYPE_PREFIX, event, true), getSelf()); }
/** * Try to connect to unreachable won nodes from time to time */ private void lifeCheck() { List<String> failedNodes = IteratorUtils.toList(failedWonNodeUris.iterator()); log.debug("retry to connect to all failed won nodes again: {}", failedNodes); failedWonNodeUris.clear(); for (String uri : failedNodes) { // try register at the wonnode again WonNodeEvent e = new WonNodeEvent(uri, WonNodeEvent.STATUS.RETRY_REGISTER_FAILED_WON_NODE); pubSubMediator.tell(new DistributedPubSubMediator.Publish(e.getClass().getName(), e), getSelf()); } }
@Override public void apply(WorkCompleted event) throws Exception { workState = workState.updated(event); mediator.tell( new DistributedPubSubMediator.Publish(RESULTS_TOPIC, new WorkResult(event.workId, event.result)), getSelf()); getSender().tell(new Ack(event.workId), getSelf()); } });
private <E extends Event> void persistEvent(final E event, final Consumer<E> consumer) { persist(event, persistedEvent -> { log.debug("Successfully persisted Event <{}>.", persistedEvent.getType()); consumer.accept(persistedEvent); pubSubMediator.tell(new DistributedPubSubMediator.Publish(event.getType(), event, true), getSelf()); // save a snapshot if there were too many changes since the last snapshot if ((lastSequenceNr() - lastSnapshotSequenceNr) > snapshotThreshold) { doSaveSnapshot(); } }); }
private void publishToMediator(final Signal<?> command, final String pubSubTopic, final ActorRef sender) { // using pub/sub to publish the command to any interested parties (e.g. a Websocket): log(command).debug("Publish message to pub-sub: <{}>", pubSubTopic); final DistributedPubSubMediator.Publish publishMessage = new DistributedPubSubMediator.Publish(pubSubTopic, command, true); pubSubMediator().tell(publishMessage, sender); }
private void notifySubscribers(final ThingEvent event) { // publish the event in the cluster // publish via cluster pubSub (as we cannot expect that Websocket sessions interested in this event // are running on the same cluster node): pubSubMediator.tell(new DistributedPubSubMediator.Publish(ThingEvent.TYPE_PREFIX, event, true), getSelf()); }
private <E extends Event> void persistEvent(final E event, final Consumer<E> consumer) { persist(event, persistedEvent -> { log.debug("Successfully persisted Event <{}>.", persistedEvent.getType()); consumer.accept(persistedEvent); pubSubMediator.tell(new DistributedPubSubMediator.Publish(event.getType(), event, true), getSelf()); // save a snapshot if there were too many changes since the last snapshot if ((lastSequenceNr() - lastSnapshotSequenceNr) > snapshotThreshold) { doSaveSnapshot(); } }); }
private void notifySubscribers(final ThingEvent event) { // publish the event in the cluster // publish via cluster pubSub (as we cannot expect that Websocket sessions interested in this event // are running on the same cluster node): pubSubMediator.tell(new DistributedPubSubMediator.Publish(ThingEvent.TYPE_PREFIX, event, true), getSelf()); }