It’s starting to feel like arbitrary when I will hit the 500 message limit. I need a good explanation on how it al works
The presentation by @dsarlis at the Scalability & Performance WG last week should be a good starting point:
Here’s a summary as a tweet thread:
but it’s worth to watch the recording.
Just curious, what is the use case that results in 500+ messages concurrently in flight between a pair of canisters?
The main reason for the existence of the limit is precisely because we wanted to prevent arbitrarily large backlogs unintentionally building up when one canister in a communicating pair can produce messages significantly faster than the other canister can consume them. And we figured 640 KB… err… 500 messages should be enough for everyone.
If you are “maybe calling yourself” convert to asycn* and await* and it will help out a lot.
Also batch your calls if you are sending to another canister. I might put a tutorial together about this using the new timer API…I’ve been needing to try it out.