I may not be understanding the question, but a programming language ecosystem won’t dictate your microservice architecture. It can help you define a single microservice within your architecture, but the architecture itself is language-independent. It depends more on how your services communicate, your cloud provider, etc.
If you’re building HTTP-based microservices, then you’re looking for what Lucky calls an API application when you generate it with
If you’re building an event-driven microservice architecture, it depends on what your event store is: Kafka, NATS, RabbitMQ, AWS SNS+SQS, etc. A web framework like Lucky can still help you with this, even if you aren’t using the HTTP server.
For worker pools:
Sidekiq.cr, a port of the Ruby
sidekiq gem, backed by Redis
Mosquito, also backed by Redis
They’re just a different entrypoint into the application than the web server and share much of the same code.
As for service discovery, again, it depends on what service-discovery provider you’re using: Consul, Zookeeper (I don’t know of a shard for it), or plain-old DNS (my own preference).
Do you know what sort of architecture you’re looking for?