move subscription related logic into message_broker
don't double pointer the payload
a nicer form of sleep
pass a pointer and not a copy
move the global logger to main.go
metrics is like logging, it makes more sense to have it setup as a global