Improve the reconnection for stream and super stream.
The high-level classes Consumer and Producer don't introduce breaking changes.
The RawSuperStream* classes change the default behaviour. Please take a look at the section 3.
Main changes:
1. Multiple Consumers and Producers per connection
The RabbitMQ stream protocol supports multi-producers and multi-consumers per TCP Connection.
This version introduces the connection pool for Consumers and Producers.
There is a new ConnectionPoolConfig setting:
new StreamSystemConfig {
ConnectionPoolConfig = new ConnectionPoolConfig()
{
ConsumersPerConnection = 10,
ProducersPerConnection = 10,
}
};
ConsumersPerConnection == The number of consumers per connection min 1 max 200 default is 1 ProducersPerConnection == The number of producers per connection min 1 max 200 default is 1
Each connection can handle different streams; see the image:
Performances
Sharing the same connection for multiple streams reduces the number of connections, but it could impact the performances:
Consumer side. If one consumer is slow, it can also affect the other consumers
Producer side: If all the producers are at full rate, it can reduce the performances
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Bumps RabbitMQ.Stream.Client from 1.7.4 to 1.8.0.
Release notes
Sourced from RabbitMQ.Stream.Client's releases.
... (truncated)
Commits
86b9d4c
Add super stream exists API (#358)ac23f56
Implement Add/Remove super stream feature (#357)335a0f3
Remove code duplication to handle the pool (#356)66cbd13
Add Chunk info consumer side (#355)dd8a4ce
Check the entity status during the close (#353)66b9cab
Consumer connected only to the followers (#352)c3d8e55
Update secret functionality (#342)d70458a
Add event status changed (#349)85c220a
Add Producer/Consumer Identifier (#348)fa8f66b
Increase the backoff strategy time (#345)Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show