-
Notifications
You must be signed in to change notification settings - Fork 69
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
FEATURE: Consumer prefetch update? #221
Comments
Hi @mortiy, I don't believe it is possible to change a consumer specific prefetch with the AMQP. The only way would be to cancel the consumer and re-consume, specifying the new prefetch value, e.g. const subscription1 = await broker.subscribe('s1', { prefetch: 1 });
await subscription1.cancel();
const subscription2 = await broker.subscribe('s1', { prefetch: 2 }); If you use a channel level prefetch it is possible with AMQP, but not with Rascal since it uses a channel pool. |
Got it, thank you. |
Sorry @mortiy, I just realised I was wrong with the comment about channel pooling - this is only when publishing messages. Rascal users a single channel per consumer, so it might actually be possible to update it. Let me check |
I think it will be possible with the addition of a new method on the subscription and some other changes. e,g, const subscription = await broker.subscribe('s1', { prefetch: 1 });
subscription.setPrefetch(2); The catch is that for this to work, I will have to change Rascal's existing mode of consumer level prefetch to channel level prefetch. I think this will be OK since Rascal does not share channels between consumers. I also don't think it makes sense to support changing any other subscriber options. Do you agree? |
Sounds good for me.
I don't have any other options that I'm willing to change, so yes, that should work. |
I've read up on Consumer Prefetch and things aren't quite as straight forward as I had hoped. According to the docs, setting a channel level prefetch causes consumption to be slow, especially in a clustered environment. I'm not sure if this is still true when using an explicit channel per consumer, but suspect it might be. Therefore it wouldn't be safe to change Rascal to set a channel level prefetch. However, it is possible to specify both a channel and consumer level prefetch, in which case both will be honoured. So I could provide a Overall, I'm not sure the risk of an unexpected (if someone didn't RTFM) performance penalty is worth the trouble, so will give it some more thought. |
Will be published shortly as v17. |
Hi @cressie176,
Is there any possible/recommended way I can update existing subscription settings, like
prefetch
?The text was updated successfully, but these errors were encountered: