c# – TPL Dataflow batching dataflow with retry

I have a process for downloading files that can take some time and often fails. I need to download 7 files and I can download 4 at a time. I would like to have the process start 4 and as they complete start another. Also, it needs to retry any failures. I found this code example which seems to handle the failure but I am not sure how to manage the batching.

    public interface IJobQueue<T>
   {
        void Enqueue(string T);
   }

   class MyPoisonQueue : IJobQueue<string>
   {
       public void Enqueue(string str)
   {
    // do something
}
}

 public class TPLDataflowWithErrorHandling : IJobQueue<string>
 {
private ActionBlock<string> _jobs;

public TPLDataflowWithErrorHandling(IJobQueue<string> poisonQueue)
{
    var policy = 
        Policy.Handle<Exception>() // on any exception
        .Retry(3); // retry 3 times

    _jobs = new ActionBlock<string>((job) =>
    {
        try
        {
            policy.Execute(() =>
            {
                int customer = GetCustomerById(job);// possibly throws exception
                Console.WriteLine(customer.Name);
            });
        }
        catch (Exception e)
        {
            // If policy failed (after 3 retries), move to poison queue
            poisonQueue.Enqueue(job);
        }
    });
}

public void Enqueue(string job)
{
    _jobs.Post(job);
}

}