Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Fix: Sync Over Async Improvements (#3409)
* fix: add support for Send to our synchronization context, to allow it to work in more use cases * fix: remove blocking wait from consumers that do not have a built in delay function. * fix: document where wait completes on the synchronizationcontext via the performer thread. * fix: update comments for sync and async, fix one where appropriate * feat: add adr describing approach; rename to use reactor and proactor to align with documentation. * feat: improve the adr about Brighter's usage of threading. * fix: use GetAwaiter().GetResult() for better call stack * feat: Update the ADR for IAmAMessageConsumerAsync * feat: add IAmAMessageConsumerAsync.cs and initial tests. * feat: additional tests for InMemoryConsumerAsync * feat: allow proactor to use async methods on transports, if they exist * feat: expose async methods from AWS to Proactor.cs * fix: nullability of AWS transport * fix: add async options to ASB * chore: branch switch * feat: add async support to Kafka * chore: separate summary from remarks * feat: add async to RMQ; update to RMQ V7 * feat: add nullability to RMQ transport * feat: add async operations to mssql transport * chore: fix nullable issues for MS SQL transport * chore: move Redis to using ChannelName and RoutingKey over string, to reduce primitive obsession. * feat: upgrade the sychronizationcontext to work with the scheduler, derived from Stephen Cleary work * chore: reorg tests around reactor and proactor * Shift to run whole loop through synchronizationcontext over parts * Make the choice of proactor/reactor easier to understand * fix: switch to close implementation of Stephen Cleary's Nito as a starting point; can't use direct as not strong named, and adds depenency we can't fix * fix: update ADR to reflect sources changes; update sources to reflect code origins * fix: need to be explicit about your pump type if not proactor now * fix: license file URI for Stephen Cleary was wrong * feat: update ADR to show native support for proactor or reactor * fix: match proactor tests to reactor tests to flush issues * fix: add duplicates for the tests within Reactor, not in Proactor * fix: make rmq broker creation async; add cancellationtoken to sendasync * fix: add async tests for RMQ, use to flush out issues with synchronization context, particularly in test scenarios (as runner and framework also have contexts) * feat: add tests for internal syncrhonizationcontext, derived from Stephen Cleary * fix: tests show that we should remove the reentrancy check; there may be an issue, but this was not how to solve * fix: add async disposable pattern to consumer * feat: support IAsyncDisposable * fix: remove GetAwaiter().GetResult() from hot paths * fix: Improve the ADR to reflect results; attribution in the README.md file * chore: add some debugging support for thornier issues * chore: add better debug statements; helps to diagnose scheduler & context issues. Issue with scheduler being used outside of helper context. * chore: add async versions of AWS tests * chore: fix missing interface member * chore: add missing interface methods * chore: async service bus tests * fix: confirm that if task scheduler reset correctly, we don't get a spurious callback * fix: note concerns on TaskScheduler and ConfigureAwait * fix: another pass at exploring the edge case, that causes work to be accidentally queued to our scheduler * fix: some fallback approaches in Post * Pull one issue with blocking in the Proactor pipeline out. * fix: Notes on TaskScheduler and ConfigureAwait * fix: update ADR link * fix: allow asynchronous producer creation (mainly useful for AWS now) * fix: add async tests to Kafka; remove spurious finalize call * fix: add async to mqtt * fix: add async for mssql * fix: Add async Redis tests * chore: syntax modernization * fix: accidental sample drop
- Loading branch information