use of org.finos.symphony.toolkit.stream.handler.SymphonyStreamHandler in project spring-bot by finos.
the class KoreAIBridgeFactoryImpl method buildBridge.
@Override
public SymphonyStreamHandler buildBridge(KoreAIInstanceProperties props) {
String email = "--no email--";
try {
// build KoreAI pipeline
ApiInstance apiInstance = symphonyAPIInstance(props);
email = apiInstance.getIdentity().getEmail();
KoreAIResponseBuilder koreAIResponseBuilder = koreAIResponseBuilder();
KoreAIResponseHandler koreAIResponseHandler = responseMessageAdapter(apiInstance, props);
KoreAIRequester requester = koreAIRequester(props, koreAIResponseHandler, koreAIResponseBuilder);
List<StreamEventConsumer> consumers = new ArrayList<StreamEventConsumer>();
consumers.add(koreAIEventHandler(requester, apiInstance, props));
if (props.isSendWelcomeMessage()) {
consumers.add(new RoomWelcomeEventConsumer(apiInstance.getAgentApi(MessagesApi.class), apiInstance.getPodApi(UsersApi.class), apiInstance.getIdentity(), props.getWelcomeMessageML()));
}
// wire this up to a shared stream
SymphonyStreamHandler out = sshf.createBean(apiInstance, consumers);
return out;
} catch (Exception e) {
LOG.error("Couldn't construct Kore/Symphony bridge bean for " + email, e);
return null;
}
}
use of org.finos.symphony.toolkit.stream.handler.SymphonyStreamHandler in project spring-bot by finos.
the class SymphonyLeaderEventFilterIT method testMultipleStreamingConsumers.
@Test
public void testMultipleStreamingConsumers() throws InterruptedException {
List<SimpleEventConsumer> consumers = IntStream.range(0, 4).mapToObj(i -> new Participant("p" + i)).map(p -> new SimpleEventConsumer(p)).collect(Collectors.toList());
List<SymphonyStreamHandler> wrapped = consumers.stream().map(c -> {
lmh = new SymphonyRoomSharedLog(clusterName, streamId, messagesApi, "UNIT", 6000);
SymphonyStreamHandler out = new SymphonyStreamHandler(singleApi, c, ec, false);
out.setFilter(new SymphonyLeaderEventFilter(c.p, lmh));
out.start();
return out;
}).collect(Collectors.toList());
// send some messsages through
for (int j = 0; j < 8; j++) {
createLeaderEvent(j % 4);
for (int k = 0; k < 3; k++) {
createMessageEvent(k);
}
}
boolean done = false;
while (!done) {
Thread.sleep(2000);
done = consumers.stream().map(c -> c.collection.size() == 6).reduce(true, (a, b) -> a && b);
}
wrapped.stream().forEach(c -> c.stop());
}
use of org.finos.symphony.toolkit.stream.handler.SymphonyStreamHandler in project spring-bot by finos.
the class SharedStreamSingleBotConfig method singleSymphonyStreamHandler.
@Bean(name = "SingleSymphonyStreamHandler")
public SymphonyStreamHandler singleSymphonyStreamHandler(List<ApiInstance> symphonyApis, List<StreamEventConsumer> consumers) throws Exception {
LOG.debug("StreamEventConsumers: " + (consumers == null ? 0 : consumers.size()));
LOG.debug("SymphonyAPIs: " + (symphonyApis == null ? 0 : symphonyApis.size()));
if ((hasAtLeastOne(consumers)) && (hasOne(symphonyApis))) {
SymphonyStreamHandler ssh = streamHandlerFactory.createBean(symphonyApis.get(0), consumers);
return ssh;
} else {
LOG.debug("Not initializing SharedStreamSingleBotConfig (needs to be one of each)");
return null;
}
}
Aggregations