Ничего не понял. Так или иначе можно записывать пакеты в файл
последовательно -- какой первый появился, тот и записывается в файл
целиком. Чем не решение? Потом кто-то другой так же последовательно
вычитывает и обрабатывает, или кладёт в базу для обчётов по разным
критериям. Если пакеты мелкие, то можно положиться на атомарную
запись. Если большие, то сериализовать ручками через разделяемую
память, через множество пайпов (по пайпу на каждый источник,
который читается всегда до конца пакета и потом обслуживаются другие пайпы). Или хочется писать файл не последовательно? Но это странное желание.