-
Notifications
You must be signed in to change notification settings - Fork 2
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
Conversation
46bcf1c
to
9f64013
Compare
9fe3f15
to
f266a0f
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We'd need to support RabbitMQ versions 4.0 and 4.1 based on properties.
Like https://github.com/rabbitmq/rabbitmq-amqp-dotnet-client/pull/81/files#diff-6ae5ff33a31c0e120fe02d2748cee1efcc6f9c9d374c56dc48a1aa84c363b5c5R129
@Gsantomaggio if we don't want a dependency on Update: yeah, I'll do that. |
* 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]>
d54e8fa
to
b96375e
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Great job! @lukebakken
Fixes #80