Releases: raj-open/example-rabbit-mq
🧰 Cleaned docker variables + scripts
🧰 Serialisation + Idiomatic implementation of Context Manager
In this patch release we mainly refactored serialisation in particular for logging purposes.
In addition the context manager for channels, whilst previously correct, has been re-implemented in a more idiomatic manner.
🧰 Refactored Channel and Error handling in feature
This patch release contains the following changes:
- all boilerplate from feature refactored out to wrapper (superfeature)
- handling of errors cleaned up + added logging of errors to rabbit mq
- field to optionally purge queue at start of run added to requests config
Testing
- rabbit mq in docker + cli
- rabbit mq in docker + fastapi
- rabbit mq in docker + fastapi in docker
- rabbit mq in docker + demos
Outlook
- automated tests
- possibly refactor algorithm to abstractly "lazy trees" as opposed to file system
🛄 Slight improvements to Search Algorithms + Demos
In this release we provided improvements to the "recursive" search algorithm:
- We adapted the data structure (FIFO-queue) to compress future tasks
- We added the option to skip empty (in terms of size, not count) files/folders, which is reflected in the requests.yaml options field.
- For stability we added hard breaks for overly long queues
We also added demos with concrete use cases, execution instructions and expected outputs (at some point, these will become behavioural tests).
In the code base we also patched up a few things:
- We refactored blocks of code for channel-creation (for rabbit mq) into a context manager, thus ensuring graceful exits.
- We bugfixed an issue with generator functions in the empty case.
Testing
- rabbit mq in docker + cli
- rabbit mq in docker + fastapi
- rabbit mq in docker + fastapi in docker
- rabbit mq in docker + demos
Outlook
- unit tests
- behavioural tests
🧰 Removed artefacts
Removed a minor refactoring artefact, which could result in the effective value of max-items being halved. Also corrected information in the README.
🛄 🚀 First fully functional state – feature `SEARCH-FS` implemented
With this release we provide a full functional code base with
-
main feature
SEARCH-FSimplemented, which recursively searches for all files in a given filesystem + location and logs the filenames as json object to a running instance of RabbitMQ -
methods to generated mock data, e.g. via the command
just create-mocks \ --path "data/example" \ --max-depth 10 \ --max-folders 100 \ --max-files 1000 -
fully tested application in all three modes:
- rabbit mq served in docker + main feature
SEARCH-FSexecuted via CLI - rabbit mq served in docker + application served as FastApi + cURL command to POST endpoint
/feature/search-fs - rabbit mq served in docker + application served as FastApi within docker + cURL command to POST endpoint
/feature/search-fs
- rabbit mq served in docker + main feature
-
the ability for users to send a single or multiple requests to the POST endpoint
Important
The request-config now contains mandatory settings to establish upper limits for computation purposes.
Future work
Whilst this release represents the first main milestone, a number of things are left open for future work:
- Unit tests
- Behavioural tests
- Extension of the FileSystem protocol (or trait) to other file systems
- Possible application of async methods
🛅 Implemented API + Stubs
In this release the codebase has been fully prepared for use
- via CLI commands
- via API (FastApi) without docker
- via API (FastApi) with docker
We have tested basic functionality (using Postman for the API) for all three modi.
Important
The main feature SEARCH-FS has been implemented as stub and will be filled in a coming release.
🌐 🛗 Initialised repository incl. Queue
With this release we have
-
established the basic repository infrastructure incl.
- project manifest + task scripts
- CI/CD workflows (deployment is currently empty)
- documentation for setup + usage (bar main feature)
-
set up the docker infrastructure for Rabbit MQ
In subsequent releases we will focus on the source code and the main feature.