Sidekiq compatible server in rust, which behaviours totally same as vanilla when you take a look into sidekiq's dashboard.
The basic idea is that, since ruby is slow, we write job handlers in rust with native code, and put dummy tasks in ruby. When ruby submit task with sidekiq then it will be captured on rust side using name(job class name) matching.
JobHandler
and JobHandlerFactory
You can refer to examples/main.rs
for building a sidekiq-rs server, and refer to codes in ruby
to get an idea on write dummy tasks in ruby.
You can definitely embed a ruby VM in your job handlers, running ruby codes when the job is not a native job, so that it soon becomes a complete sidekiq server with additional native code support.
sidekiq-rs includes an implementation of signal handling, and it currently recognize 2 type of signals:
Server will not accept anymore jobs if either signal received.