Skip to content

A dynamic web worker service based on the plugin architecture pattern.

License

Notifications You must be signed in to change notification settings

hirre/dynamicwebworker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

48 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Dynamic Web Worker

A worker service that can dynamically be loaded with a number of worker threads using REST calls. The workers can (based on incoming messages) process some work which are located in separate libraries that are also loaded dynamically.

RabbitMQ Installation & Running with Docker

docker pull rabbitmq:3-management
docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3-management

Code Structure

  • WebWorker is the main worker service
    • Dynamically loaded work libraries are put as subfolders in /Work/* (they can be built with the publish command)
  • WebWorkerInterfaces is library with shared interfaces and models
  • TestMessageProducer is a test library to produce RabbitMQ messages
  • TestWork is a test library which implements an interface that the WebWorker dynamically loads and runs
    • Should be built with publish command and put as a subfolder in the /Work folder

Architecture

Overview

image

Type of queue used for permanent workers

image

Other

  • Can execute custom work code without using the dynamic loading feature: #8 (comment)