Our great sponsors
-
WorkOS
The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
The big unknown is your task definition: what does user-defined logic look like? If you're expecting go code, that's gonna need some cleverness because of the compiled nature of it. There's a node runtime implemented in go if you want to provide sandboxed javascript (check the source of k6.io, it's the main one I know that uses it). If you want to provide building blocks and let them compose them, starlark might be a good choice.
Watermill is a good pubsub abstraction. You can start with native go channels and grow into a cloud pubsub or Kafka/Pulsar if you need to.
Goja https://github.com/dop251/goja
K6' usage - pretty friggin robust - is here https://github.com/grafana/k6/tree/master/js
In the Django world, you'd probably rely on Celery to do this for you. You're probably looking for something similar that works with Go. https://github.com/celery/celery
Asynq looks promising. Never used it myself. https://github.com/hibiken/asynq
I created a background processor called Neoq (https://github.com/acaloiaro/neoq) that is likely to interest you.
As oblivion-2005 said, the docs are pretty good! I got started with the money transfer sample - https://github.com/temporalio/money-transfer-project-template-go and experimented from there. What took me a little while to wrap my head around was the deterministic bit, especially using workflow.Now(). I’d recommend using temporalite for testing - it makes the dev super easy. Especially with the “—ephemeral” flag.