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?
schmittlauch added the
basic functionality
ActivityPub
labels 2020-05-19 19:27:02 +02:00
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. :)
schmittlauch added this to the 1st round of experiments milestone 2020-06-03 00:54:29 +02:00
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.
schmittlauch removed this from the 1st round of experiments milestone 2020-09-16 01:13:38 +02:00
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.