Camunda Worker (External Task) - Vertx Worker / Polyglot / Multi-language worker (Javascript as well ;) )

Built a External Worker proof of concept I wanted to share.

Its a worker based on Vertx.io that is bootstrapping with Nashorn/javascript.

TLDR: It’s a Microservice External Task Worker that will execute multiple languages. I built it with all JS as a alternative to the Node worker, but still get all of the benefits of the JVM and java as a whole.

Check it out, provide some feedback and ideas. Still some work to do for some QOL updates, but the bones are there.

2 Likes

I have updated a branch with Gemfile/Ruby support that will auto download the ruby gem deps from rubygems.org as written in the gemfile. This replicates the same style of functionality as the Vertx Stack-Manager: allowing you deploy your vertx instance from docker, without having to manage all of the dependency downloads.

.rb file: https://github.com/DigitalState/camunda-worker-vertx/blob/feature-ruby-rubygems-stackmanager/worker/verticles/ruby-biz/ruby-biz.rb

gemfile: https://github.com/DigitalState/camunda-worker-vertx/blob/feature-ruby-rubygems-stackmanager/worker/Gemfile

dockerfile: https://github.com/DigitalState/camunda-worker-vertx/blob/feature-ruby-rubygems-stackmanager/worker/Dockerfile

Simple example of use case: Ruby has 3 extremely mature / feature rich business calendar libraries. When you compare these libs to other languages, ruby wins by a long shot. Other langs just dont have the same libs available that have been built by the community.

Now we can take advantage of the Ruby libs without the overhead.

I have updated this example:

Now with FatJar capability, a gradle build, and more flexible architecture.

It will also download NPM packages from package.json and RubyGems and GemFile

There is a dockerfile example showing how to package the whole deployment up into a single executable FatJar. See the readme.

@nikku I am interested at ways to leverage your work on your Node External Task worker.

Feel free to check it out and use where appropriate.