Rewriting to single pipeline by using data flow blocks
Isn't it possible to rewrite the code to a single pipeline without
  creating an instance of a nested pipeline for each message?


It really seems a hard task because you are putting the pipeline building logic into the transform Method. Create a method to build your pipeline, it is really asking for it!

private static PipelineType _pipeline;
private static PipelineType BuildPipeline(Message&lt;int&gt; input){
    if(_pipeline != null){
        _pipeline.Post(input.Items);
        _pipeline.Complete();
        return _pipeline;
    }
    var linkOpts = new DataflowLinkOptions { PropagateCompletion = true };

    var itr = new TransformManyBlock&lt;IList&lt;int&gt;, int&gt;(x =&gt; x);
    var multiply = new TransformBlock&lt;int, int&gt;(x =&gt; x * 10);
    var convert = new TransformBlock&lt;int, string&gt;(x =&gt; "STR-" + x);

    itr.LinkTo(multiply, linkOpts);
    multiply.LinkTo(convert, linkOpts);

    _pipeline = DataflowBlock.Encapsulate(itr, convert);

    _pipeline.Post(input.Items);
    _pipeline.Complete();

    var buffer = new BufferBlock&lt;string&gt;();
    _pipeline.LinkTo(buffer);

    return _pipeline;
}


To be able to acess the buffer in your transform method you should set it public. But actually the best option would be that await pipeline.Completion would return the result you need.