private Target getTarget(final String feedName, final String typeName) {
        return targetMap.computeIfAbsent(feedName, k -> {
            LOGGER.debug(() -> "getTarget() - open stream for " + feedName);

            // Get the effective time if one has been provided.
            final Long effectiveMs = StreamFactory.getReferenceEffectiveTime(getCurrentAttributeMap(), true);

            final MetaProperties metaProperties = MetaProperties.builder()
                    .feedName(feedName)
                    .typeName(typeName)
                    .effectiveMs(effectiveMs)
                    .build();

            final String volumeGroupName = volumeGroupNameProvider
                    .getVolumeGroupName(feedName, typeName, null);
            final Target streamTarget = store.openTarget(metaProperties, volumeGroupName);
            streamSet.add(streamTarget.getMeta());
            return streamTarget;
        });
    }
Type of {@link StreamHandler} that store the entries in the stream store.
There are some special rules about how this works.
<p>
This is fine if all the meta data indicates they belong to the same feed
001.meta, 002.meta, 001.dat, 002.dat
<p>
This is also fine if 001.meta indicates 001 belongs to feed X and 002.meta
indicates 001 belongs to feed Y 001.meta, 002.meta, 001.dat, 002.dat
<p>
However if the global header map indicates feed Z and the files are send in
the following order 001.dat, 002.dat, 001.meta, 002.meta this is invalid ....
I.E. as soon as we add non header stream for a feed if the header turns out
to be different we must throw an exception.
stroom-receive/stroom-receive-common/src/main/java/stroom/receive/common/StreamTargetStreamHandler.java