@Override public void connectWrite(WriteRecipe writeRecipe) { Map<String, WriteRecipe> splitRecipes = splitRecipe(writeRecipe); for (Entry<String, WriteRecipe> entry : splitRecipes.entrySet()) { String dataSource = entry.getKey(); WriteRecipe splitWriteRecipe = entry.getValue(); retrieveDataSource(dataSource).connectWrite(splitWriteRecipe); } }
@Override public void connectRead(ReadRecipe readRecipe) { Map<String, ReadRecipe> splitRecipe = splitRecipe(readRecipe); // Dispatch calls to all the data sources for (Map.Entry<String, ReadRecipe> entry : splitRecipe.entrySet()) { try { retrieveDataSource(entry.getKey()).connectRead(entry.getValue()); } catch (RuntimeException ex) { // If data source fail, still go and connect the others readRecipe.getChannelReadRecipes().iterator().next().getReadSubscription().getExceptionWriteFunction().writeValue(ex); } } }