Git Product home page Git Product logo

hyperonym / ratus Goto Github PK

View Code? Open in Web Editor NEW
105.0 4.0 7.0 1012 KB

Ratus is a RESTful asynchronous task queue server. It translated concepts of distributed task queues into a set of resources that conform to REST principles and provides a consistent HTTP API for various backends.

Home Page: https://hyperonym.github.io/ratus/

License: Apache License 2.0

Go 98.06% Makefile 1.23% Dockerfile 0.70%
distributed-systems priority-queue task-queue task-scheduler background-jobs mongodb restful-api golang go swagger

ratus's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

ratus's Issues

[Question] Multiple consumers and partial ordering

Good day. Thanks you for amazing tool.

I am considering this project but my question is, is it possible to implement partial ordering with this tool? I mean, suppose we have multiple consumers and we need to guarantee that tasks with the same hash (ordering group or somethink like that) will be processed by same consumer?

In kafka this is done automatically, in rabbitmq there is a plugin for that. You can read about partial ordering in this article

https://alexravikovich.medium.com/rabbitmq-partial-order-implementation-using-consistent-hash-exchange-golang-29ab6f439021

Thanks a lot.

Missing docker HealthCheck

Is: Currently the dockerfile does not contain a health check
Wish: Would it be possible to include a health check in the dockerfile?

My current workaround:

ARG BASE_IMAGE="hyperonym/ratus"

FROM alpine as builder
ADD https://github.com/moparisthebest/static-curl/releases/download/v8.7.1/curl-amd64 /curl
RUN chmod 700 /curl

FROM ${BASE_IMAGE}
COPY --from=builder /curl /curl

EXPOSE 80/tcp
HEALTHCHECK --interval=60s --timeout=10s --start-period=5s CMD ["/curl", "-sSf", "http://127.0.0.1/readyz"]

feature-request: server generated ids

Allow producers to create tasks with a well-known id that will be interpreted by the server as a request for a server-generated id (in this example '0').

Update responses would include a list of ids alongside the counts, corresponding to the tasks submitted. Supplied ids would just be reflected back.

Calling

$ curl -X POST -d '{"payload": "hello world"}' "http://127.0.0.1:8000/v1/topics/example/tasks/0"

adds a task and has a response like

{"created":1,"updated":0,"ids":["52acfef8-d77e-45ff-aff9-4780ca414be1"]}
{
   "_id": "52acfef8-d77e-45ff-aff9-4780ca414be1",
   "topic": "example",
   "state": 0,
   "nonce": "",
   "produced": "2022-09-21T10:12:23.065074065Z",
   "scheduled": "2022-09-21T10:12:23.065074065Z",
   "payload": "hello world"
}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.