GenServer advice needed - relationship between handle_call and handle_info that use the same state

Correct!

Yes! :slight_smile:

Not necessarily. Using ETS makes sense if you have a lot of data that you might want to search through. If you have a queue of ‘jobs’ (of whatever kind), then simply using a single process whose state is a list, map or queue should do the job just fine, without adding complexity of using a system ETS for the developer.

Depends on what you want to archieve exactly: If you want the items to be processed and they can be processed completely separately, then you could use Task.async or Task.async_stream to do the job, which means that process_queue will not block for long.

On the other hand, if it was possible to process items completely separately from the start, one could create Tasks right away, and not need to bother to use a queue at all.

So: What is this job queue for, exactly?