background job processing for delivering ActivityPub pushes #19

Open
opened 2020-05-19 19:22:49 +02:00 by schmittlauch · 5 comments
Owner

The relay node role requires nodes to push new posts to subscribing servers. Such actions can be queued and processed asynchronously in the background.

Mastodon uses Sidekiq as a job executor and scheduler. Do similar things exist in the Haskell world, are they necessary and should this project use them? Or are forkIOd threads, channels and maybe some persistence layer in between enough?

The relay node role requires nodes to push new posts to subscribing servers. Such actions can be queued and processed asynchronously in the background. Mastodon uses Sidekiq as a job executor and scheduler. Do similar things exist in the Haskell world, are they necessary and should this project use them? Or are `forkIO`d threads, channels and maybe some persistence layer in between enough?
Author
Owner

The DHT layer also needs to schedule regular maintenance jobs, but as those won't pile up such an asynchronous background processing worker queue isn't necessary.

The DHT layer also needs to schedule regular maintenance jobs, but as those won't pile up such an asynchronous background processing worker queue isn't necessary.
Contributor

@schmittlauch If you wish to use one of the best and full-featured libraries on Hackage, I can only recommend odd-jobs.

@schmittlauch If you wish to use one of the best and full-featured libraries on Hackage, I can only recommend [*odd-jobs*](https://www.haskelltutorials.com/odd-jobs/).
Author
Owner

This one pulls in Postgres. I still have to decide on how to persist data, will probably ask around in the SocialHub thread quite soon.

Note to self for further reading: https://www.haskelltutorials.com/odd-jobs/haskell-job-queues-ultimate-guide.html

This one pulls in Postgres. I still have to decide on how to persist data, will probably ask around in the SocialHub thread quite soon. Note to self for further reading: https://www.haskelltutorials.com/odd-jobs/haskell-job-queues-ultimate-guide.html
Contributor

I personally think Postgres is far from being "overkill" if you are going to build some kind of highly-connected network service, especially if you wish to do some retention. Of course it's not like sqlite3, but it's a fairly standard tool on the "engineering" side of things. :)

I personally think Postgres is far from being "overkill" if you are going to build some kind of highly-connected network service, especially if you wish to do some retention. Of course it's not like `sqlite3`, but it's a fairly standard tool on the "engineering" side of things. :)
Author
Owner

in the mock post service, this is done by separate worker threads and in-memory.
Thus removing it from the milestone.

in the mock post service, this is done by separate worker threads and in-memory. Thus removing it from the milestone.
Sign in to join this conversation.
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
schmittlauch/Hash2Pub#19
No description provided.