svaloumas/valet

feat: add Kafka job queue implementation

svaloumas opened this issue · 0 comments

Is your feature request related to a problem? Please describe.
Currently, there are three concrete implementations of the JobQueue interface (in-memory, RabbitMQ, and Redis).

Describe the solution you'd like
It would be nice to extend this flexibility by adding a Kafka FIFO job queue implementation.

Additional context
The interface to be implemented is the following.

// JobQueue represents a driven actor queue interface.
type JobQueue interface {
	// Push adds a job to the queue.
	Push(j *domain.Job) error

	// Pop removes and returns the head job from the queue.
	Pop() *domain.Job

	// CheckHealth checks if the job queue is alive.
	CheckHealth() bool

	// Close liberates the bound resources of the job queue.
	Close()
}

The config and the job queue factory method should also be updated to support the new functionality.
README should also be updated accordingly.