Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Buffer Count Or Time operator #324

Merged
merged 6 commits into from
Jun 9, 2021

Conversation

nordfjord
Copy link
Contributor

After submitting a few PR's I thought it might be a good idea to share an operator that's been tremendously useful for me.

The scenario I'm dealing with is a subscription (i.e. to a message broker) that emits pretty fast. I'm handling messages from this queue in batches.

Using a plain old bufferCount left me in trouble because messages slow down in the evening. During the slowdown some messages would wait a long time in the buffer before being handled (sometimes not until the next day 😱)

I needed an operator that would "flush" the buffer every so often in case of slow messages.

Introducing bufferCountOrTime 🎉

I changed my code from:

subscription.pipe(
  bufferCount(16)
  // ...

to

subscription.pipe(
  bufferCountOrTime(16, 1000)
  // ...

And all is well! At worst a message waits a second in the buffer before being handled 🚀

@nordfjord
Copy link
Contributor Author

Let me know if this is something that would better belong in a contrib library and not here

@trxcllnt
Copy link
Member

trxcllnt commented Jun 9, 2021

Sorry for the delay. This looks great, thanks @nordfjord!

@trxcllnt trxcllnt merged commit ee7c43e into ReactiveX:master Jun 9, 2021
@trxcllnt
Copy link
Member

trxcllnt commented Jun 9, 2021

Released in [email protected].

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants