Live data from Hacker News

River: A fast, robust job queue for Go and Postgres

brandur.org

91–100 of 112 posts

Re: River: A fast, robust job queue for Go and Postgres

#91
Nice!

A few years ago I wrote my own in house distributed job queue and scheduler in Go on top of Postgres and would have been very happy if a library like this had existed before.

The two really are a great pair for this usecase for most small to medium scaled applications, and it's awesome to see someone putting a library out there publicly doing it - great job!!

Re: River: A fast, robust job queue for Go and Postgres

#92
post #86

The number of features lifted directly from Oban[1] is astounding, considering there isn't any attribution in the announcement post or the repo. Starting with the project's tagline, "Robust job processing in Elixir", let's see what else: - The same job states, including the British spelling for `cancelled` - Snoozing and cancelling jobs inline - The prioritization system - Tracking where jobs were attempted in an att…

As if Oban invented anything, like queues on RDMS is not a new concept at all. Oban is 4 years old, do you know how many queues baked by DB were created in the last 10years? I don't see Sidekiq credited on the main page of Oban.

Not sure if you meant to compare to Sidekiq (which uses Redis). But delayed-job and que are both projects that stretch back much more than 4 years in the ruby ecosystem that leverage relational databases as well.

Re: River: A fast, robust job queue for Go and Postgres

#93
Interesting, I would have though a solution like https://temporal.io/ would be more appropriate for these use cases.

a job queue might just be the tip of the use cases iceberg... isn't it?

in the end it's a pub/sub - I use nats.io workers for this.

arf, just read a few comments on this same line down bellow.

Re: River: A fast, robust job queue for Go and Postgres

#94

The number of features lifted directly from Oban[1] is astounding, considering there isn't any attribution in the announcement post or the repo. Starting with the project's tagline, "Robust job processing in Elixir", let's see what else: - The same job states, including the British spelling for `cancelled` - Snoozing and cancelling jobs inline - The prioritization system - Tracking where jobs were attempted in an att…

Data point: I am American and I would not spell 'cancelled' any other way. I don't think it is strictly British.

Re: River: A fast, robust job queue for Go and Postgres

#95
post #21

Hi HN, I'm one of the authors of River along with Brandur. We've been working on this library for a few months and thought it was about time we get it out into the world. Transactional job queues have been a recurring theme throughout my career as a backend and distributed systems engineer at Heroku, Opendoor, and Mux. Despite the problems with non-transactional queues being well understood I keep encountering these…

Does it do job completion notification?

Along the lines of:

    _, err := river.Execute(context.Background(), j) // Enqueue the job, and wait for completion
    if err != nil {
        log.Fatalf("Unable to execute job: %s", err)
    }
    log.Printf("Job completed")
Does that make sense?

Re: River: A fast, robust job queue for Go and Postgres

#96
post #93

Interesting, I would have though a solution like https://temporal.io/ would be more appropriate for these use cases. a job queue might just be the tip of the use cases iceberg... isn't it? in the end it's a pub/sub - I use nats.io workers for this. arf, just read a few comments on this same line down bellow.

The main benefit of something like River is simplicity. With River your application might consist of two components, a database, and a code server. Such an architecture is really easy to test, develop, debug and deploy.

Adding temporal.io means introducing a third component. More components usually means more complexity. More complexity means more difficult to test, develop, debug and deploy.

As with everything, it's all about tradeoffs.

Re: River: A fast, robust job queue for Go and Postgres

#97
post #21

Hi HN, I'm one of the authors of River along with Brandur. We've been working on this library for a few months and thought it was about time we get it out into the world. Transactional job queues have been a recurring theme throughout my career as a backend and distributed systems engineer at Heroku, Opendoor, and Mux. Despite the problems with non-transactional queues being well understood I keep encountering these…

Really cool. I'm working on .Net project that I've also adopted a "single dependency" stance on; that being Postgres. I'm pretty thrilled to see I'm not the only one lol!

I plan to use Orleans to handle a lot of the heavy HA/scale lifting. It can likely stand in for Redis in a lot of cache use cases(in some non-obvious ways), and am anticipating writing a Postgres stream provider for it when the time comes.. Will likely end up writing a Postres job queue as well so will definitely check out River for inspiration.

A lot of postgres drivers, including the .Net defacto Npgsql, support logical decode these days which unlocks a ton of exciting use cases and patterns via log processing.

Re: River: A fast, robust job queue for Go and Postgres

#98
post #94

The number of features lifted directly from Oban[1] is astounding, considering there isn't any attribution in the announcement post or the repo. Starting with the project's tagline, "Robust job processing in Elixir", let's see what else: - The same job states, including the British spelling for `cancelled` - Snoozing and cancelling jobs inline - The prioritization system - Tracking where jobs were attempted in an att…

Data point: I am American and I would not spell 'cancelled' any other way. I don't think it is strictly British.

As far as I've seen, Americans are just plain inconsistent on this spelling.

Cancelled has nice pairing with cancellation, canceled can be typed nicely without any repeated finger use on qwerty, both clearly mean the same thing and aren't confused with something else... I say let the battles begin, and may the best speling win.

Referer pains me though.

Re: River: A fast, robust job queue for Go and Postgres

#99
post #98
post #94

Earlier quoted context omitted.

Data point: I am American and I would not spell 'cancelled' any other way. I don't think it is strictly British.

As far as I've seen, Americans are just plain inconsistent on this spelling. Cancelled has nice pairing with cancellation, canceled can be typed nicely without any repeated finger use on qwerty, both clearly mean the same thing and aren't confused with something else... I say let the battles begin, and may the best speling win. Referer pains me though.

To be fair, "referer" is just a misspelling, I don't think it was ever accepted as a correct spelling by a large number of people. I'm sure you know the backstory though.
Post reply on HN