use a cache for workers and a cache for messages

Signed-off-by: Sébastien Boisvert <boisvert@anl.gov>