private void sendEvent(Event[] events) {
        if (throughputTracker != null && Level.BASIC.compareTo(siddhiAppContext.getRootMetricsLevel()) <= 0) {
            throughputTracker.eventsIn(events.length);
        }
        if (isTraceEnabled) {
            log.trace("Event is received by streamJunction " + this);
        }
        if (disruptor != null) {
            for (Event event : events) {   // Todo : optimize for arrays
                long sequenceNo = ringBuffer.next();
                try {
                    EventExchangeHolder eventExchangeHolder = ringBuffer.get(sequenceNo);
                    eventExchangeHolder.getEvent().copyFrom(event);
                    eventExchangeHolder.getAndSetIsProcessed(false);
                } finally {
                    ringBuffer.publish(sequenceNo);
                }
            }
        } else {
            for (Receiver receiver : receivers) {
                receiver.receive(events);
            }
        }
    }
Stream Junction is the place where streams are collected and distributed. There will be an Stream Junction per
evey event stream. {@link StreamJunction.Publisher} can be used to publish events to the junction and
{@link StreamJunction.Receiver} can be used to receive events from Stream Junction. Stream Junction will hold the
events till they are consumed by registered Receivers.
modules/siddhi-core/src/main/java/io/siddhi/core/stream/StreamJunction.java