I am curious about these three questions when building a push-based(write fanout) feed system:

  1. How does it handle the unsubscribe logic?

To me, it seems to me that we have two choices: delete or keep the history data from one’s inbox.

If we choose to keep it, does it mean that when processing the timeline read request, we have to do another step of filter -- to check whether the author of the message retrieved from the inbox is still included in the requester's following list or not?

  1. How does it handle message erasure?

For example, when an author deletes one of his blog, it seems to me that the design decision here is also similar to unsubscribe.

  1. For a new-registered user has empty following list, when he/she follows a new user, what should we do to fill his/her timeline, back to pull-based method?
  • 1
    To answer 1), in order not to overcomplicate implementation, most systems allowing you to unsubscribe inform you after cancelling the subscription that the process may take up to 24 hours and it's possible you may still receive a message during the cancellation period. In fact, in most cases, the unsubscribe operation is processed instantly, the 24 hours period is just a safe measure in case there are some messages still left in the bus which haven't yet been delivered. Users are mostly OK with this.
    – Andy
    Mar 8, 2020 at 11:41

1 Answer 1


Generally a push based system doesn't bring subscribers up to date with messages sent prior to the subscriber's subscription.

If you miss a message, you don't get it.

In order to achieve the "bring me up to date" requirement, you can augment the push system with a pull system for history.

  • Is it considered as best practice to implement a website's comment/upvote notification system(just like stack exchange recent inbox message) by feed system? Mar 14, 2020 at 13:11
  • when you commented here I got a notification. You cant do that with pull. But when I clicked the message I pulled the page with all comments
    – Ewan
    Mar 14, 2020 at 16:34

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.