private void sendData(long timeStamp, Object[] data) {
        if (throughputTracker != null && Level.BASIC.compareTo(siddhiAppContext.getRootMetricsLevel()) <= 0) {
            throughputTracker.eventIn();
        }
        if (disruptor != null) {
            long sequenceNo = ringBuffer.next();
            try {
                EventExchangeHolder eventExchangeHolder = ringBuffer.get(sequenceNo);
                eventExchangeHolder.getAndSetIsProcessed(false);
                eventExchangeHolder.getEvent().setTimestamp(timeStamp);
                eventExchangeHolder.getEvent().setIsExpired(false);
                System.arraycopy(data, 0, eventExchangeHolder.getEvent().getData(), 0, data.length);
            } finally {
                ringBuffer.publish(sequenceNo);
            }
        } else {
            for (Receiver receiver : receivers) {
                receiver.receive(timeStamp, data);
            }
        }
    }
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