refactor service integration to use message queue