Skip to content
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

Implement AMQP filter expressions #81

Merged
merged 1 commit into from
Nov 7, 2024

Conversation

lukebakken
Copy link
Contributor

@lukebakken lukebakken commented Oct 24, 2024

@lukebakken lukebakken self-assigned this Oct 24, 2024
@lukebakken lukebakken force-pushed the rabbitmq-amqp-dotnet-client-80 branch from 46bcf1c to 9f64013 Compare November 5, 2024 19:37
@lukebakken lukebakken marked this pull request as ready for review November 5, 2024 19:45
@lukebakken lukebakken added this to the 0.1.0-RC milestone Nov 5, 2024
@lukebakken lukebakken force-pushed the rabbitmq-amqp-dotnet-client-80 branch from 9fe3f15 to f266a0f Compare November 5, 2024 20:43
Copy link
Member

@Gsantomaggio Gsantomaggio left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

RabbitMQ.AMQP.Client/Impl/AmqpConnection.cs Show resolved Hide resolved
RabbitMQ.AMQP.Client/IConsumer.cs Show resolved Hide resolved
@lukebakken
Copy link
Contributor Author

lukebakken commented Nov 7, 2024

@Gsantomaggio if we don't want a dependency on SemVer I can copy the necessary code into this library.

Update: yeah, I'll do that.

@lukebakken lukebakken marked this pull request as draft November 7, 2024 14:48
* Start by refactoring a couple tests that use `ManualResetEvent` for coordination.
* Correctly set stream filter AMQP types in the filters map.
* Comment-out extra logging
* Replace `ManualResetEvent` with `AsyncManualResetEvent`
* Add `IStreamFilterOptions`
* Port code documentation from Java client
* Add more docs from Java client.
* Add `IStreamFilterOptions` member functions.
* Begin porting `filterExpressionApplicationProperties` test from the Java client.
* Use `pivotalrabbitmq/rabbitmq:main` because it supports AMQP 1.0 filters
* Add overloads for specific types for MessageId and CorrelationId
* Just settle on `object` for Message ID and Correlation ID
* Implement the rest of the message properties in `IMessage`.
* Rename `ApplicationProperties` to `Properties` to match Java client.
* `StreamConsumerFilterExpressionApplicationProperties` test runs successfully.
* Finish `StreamConsumerFilterExpressionApplicationProperties` test.
* Port `streamFiltering` test from Java client.
* Bump testing Windows versions
* Add `Semver` package to Tests project to allow parsing broker version.
* Skip stream filtering tests (on properties) if not at least RabbitMQ 4.1.0
* Change `IConnection` API to use `IEnumerable` instead of `ReadOnlyCollection`
* Add some messaging for when the StreamFilter test comparison fails.
* Fix the `StreamFilter` test.
* Validate message annotation key to ensure they start with `x-`
* Validate the string overload for specifying a stream offset.
* Port `StreamConsumerOptionsOffsetInterval` test from Java client.
* Port `StreamConsumerOptionsOffsetNext` from Java client.
* Port `StreamConsumerOptionsOffsetLong` from Java client.
* Working on `FilterExpressionProperties`
* Finish port of `FilterExpressionProperties` test.
* Link operations Accept, Requeue, Discard can't be async
* Continue working on `FilterExpressionPropertiesAndApplicationProperties` test
* Remove `Thread.Sleep`
* Finish `FilterExpressionPropertiesAndApplicationProperties` test.
* Remove dupicated code around validating message annotation key
* Move code out of `Utils` that is only used for tests
* Finish porting last two tests from `SourceFiltersTest.java`
* Remove `AmqpConnection` from `ConsumerConfiguration`.
* Add TODO to detect RMQ version when stream filters are used.
* Add TLS callback fot the tests
* Add arm build for the docker image
* Parse broker version and set filter capabilities based on it.

Signed-off-by: Gabriele Santomaggio <[email protected]>
@lukebakken lukebakken force-pushed the rabbitmq-amqp-dotnet-client-80 branch from d54e8fa to b96375e Compare November 7, 2024 15:19
@lukebakken lukebakken marked this pull request as ready for review November 7, 2024 15:19
Copy link
Member

@Gsantomaggio Gsantomaggio left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great job! @lukebakken

@lukebakken lukebakken merged commit 19585bf into main Nov 7, 2024
1 of 2 checks passed
@lukebakken lukebakken deleted the rabbitmq-amqp-dotnet-client-80 branch November 7, 2024 17:19
@lukebakken lukebakken modified the milestones: 0.2.0-beta.0, 0.1.0 Nov 22, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

support for AMQP filter expressions (for RabbitMQ 4.1).
2 participants