code: @Override
      public synchronized IndexRequestProcessorFactory getIndexRequestProcessorFactory() {
          if(indexingRequestProcessingFactory==null) {
              RelatedItemStorageLocationMapper locationMapper = createIndexNameLocationMapper(applicationConfiguration);
              RelatedItemStorageRepositoryFactory repoFactory = getStorageRepositoryFactory(applicationConfiguration);
              RelatedItemReferenceEventHandlerFactory factory = createRelatedItemReferenceFactory(applicationConfiguration, locationMapper, repoFactory);
              RelatedItemIndexingMessageConverter indexingMessageToRelatedItemsConverter = createIndexingMessageToRelatedItem(applicationConfiguration);
  
              RelatedItemIndexingMessageEventHandler eventHandler = null;
  
              if(applicationConfiguration.getNumberOfIndexingRequestProcessors()>1) {
                  eventHandler = new RoundRobinRelatedItemIndexingMessageEventHandler(applicationConfiguration,
                      indexingMessageToRelatedItemsConverter, createRelatedItemReferenceFactory(),factory);
              } else {
                  eventHandler = new SingleRelatedItemIndexingMessageEventHandler(applicationConfiguration,
                      indexingMessageToRelatedItemsConverter,repoFactory.getRepository(applicationConfiguration),locationMapper);
              }
  
              this.indexingRequestProcessingFactory = new DisruptorIndexRequestProcessorFactory(createBytesToIndexingMessageConverterFactory(),
                      createIndexingMessageFactory(),eventHandler);
          }
  
          return indexingRequestProcessingFactory;
      }
docs: chooses between the backend processing that is done to turn the request data into a
  {@link org.greencheek.related.api.indexing.RelatedItemIndexingMessage}
  that is stored in the backend.
  
  The processing is in either one of two ways:
  
  <pre>
  1)  ---->  Request --->  Ring buffer (to IndexingMessage)  --->  Storage repository
  
  OR
  
  2)  ---->  Request --->  Ring buffer (to IndexingMessage)  --->  Ring Buffer (Reference) ---> Storage Repo
  --->  Ring Buffer (Reference) ---> Storage Repo
  --->  Ring Buffer (Reference) ---> Storage Repo
  </pre>
  
  The choice between the two request processor is done based upon the value set for {@link org.greencheek.related.util.config.Configuration#getNumberOfIndexingRequestProcessors()}