You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
We use Kafka Flow extensively in a high throughput application distributed across many nodes behind a F5 Load balancer which handles RESTful requests our application satisfies with data pulled from Kafka Topics.
What we've stumbled across is a failure scenario where the F5 (out of our control) simply stops talking to one of a KafkaFlow based nodes and it's subscription to topic/partitions is never revoked so that data isn't returned to the client until the F5 starts to talk to it again. To get around this I've implemented a timer which checks the last access time and in x minutes calls:
What I'm finding is that it does stop but then, (a few 10's of seconds later) it seems to start up again, we only have one place where they are StartAsync() and that's definitely not being hit again.
I've tried pausing the consumer first, completing all the outstanding messages but no avail.
Setting WithMaxPollIntervalMs() Also doesn't seem to do what I thought it would and revoke IF no messages were received (even though
connection to Kafka is alive)
Any Help appreciated or if you need more info please let me know.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
-
We use Kafka Flow extensively in a high throughput application distributed across many nodes behind a F5 Load balancer which handles RESTful requests our application satisfies with data pulled from Kafka Topics.
What we've stumbled across is a failure scenario where the F5 (out of our control) simply stops talking to one of a KafkaFlow based nodes and it's subscription to topic/partitions is never revoked so that data isn't returned to the client until the F5 starts to talk to it again. To get around this I've implemented a timer which checks the last access time and in x minutes calls:
await Consumer.StopAsync();
await Consumer2.StopAsync();
As we have several consumers.
What I'm finding is that it does stop but then, (a few 10's of seconds later) it seems to start up again, we only have one place where they are StartAsync() and that's definitely not being hit again.
I've tried pausing the consumer first, completing all the outstanding messages but no avail.
Setting WithMaxPollIntervalMs() Also doesn't seem to do what I thought it would and revoke IF no messages were received (even though
connection to Kafka is alive)
Any Help appreciated or if you need more info please let me know.
Beta Was this translation helpful? Give feedback.
All reactions