Skip to content

Releases: vvatanabe/dynamomq

v0.11.0

15 Dec 09:56
Compare
Choose a tag to compare

New Features

  • Implemented a delay feature in the SendMessage() API, allowing messages to be scheduled for future delivery.
  • Added a concurrency option to ConsumerOptions, enabling control over the number of concurrent message processing workers.
  • Updated DynamoMQClient to store visibility timeout as a datetime in the invisible_until_at field and added a retryInterval parameter to the Consumer.
  • Implemented visibility timeout, allowing messages to remain invisible in the queue for a specified duration after being received.
  • Changed DefaultVisibilityTimeoutInSeconds to 30 seconds, modifying the default behavior for message visibility.

Documentation Updates

  • Written comprehensive GoDocs for DynamoMQ Consumer, Producer, Message, and related structures.
  • Renamed fields in the stats structure for clarity and documented changes.
  • Added GoDocs for various input and output structs.
  • Updated the README.md with information about delay queues, visibility timeout, and a revised Data Transition diagram.
  • Documented the ClientImpl struct and ClientOptions in detail.

Refactoring and Structural Changes

  • Refactored various output structs (RedriveMessageOutput, MoveMessageToDLQOutput, ChangeMessageVisibilityOutput, SendMessageOutput) to include generic types and renamed specific fields for clarity.
  • Changed the scope of the client struct to public and renamed it to ClientImpl.
  • Moved default constant values to the internal/constant package for better organization.
  • Changed timestamp attribute names for improved clarity.

Fixes and Style Adjustments

  • Removed unnecessary VisibilityTimeout in RedriveMessageInput.
  • Fixed the go test command to include tee for result.json output in continuous integration settings.
  • Addressed an issue with unnecessary trailing newlines and applied goimports to message_test.go for code styling.

Full Changelog: v0.10.1...v0.11.0

v0.10.1

01 Dec 09:33
Compare
Choose a tag to compare
  • Improved Test Coverage: In previous versions, our test coverage was insufficient. With this release, we have increased it to 95%. This significant improvement enhances the reliability and stability of our codebase.
  • Resolved All SonarCloud Code Smells: We have addressed and resolved all code smells identified by SonarCloud. This has improved the readability and maintainability of our code, making future development efforts more efficient.
  • Cleared All golangci-lint Warnings: Every warning flagged by golangci-lint has been addressed in this release. This further enhances the quality of our code and ensures adherence to consistent coding standards.

Full Changelog: v0.10.0...v0.10.1

v0.10.0

16 Nov 00:08
Compare
Choose a tag to compare
  • List Message Sorting: Enhanced the ListMessages function to sort messages, providing more structured and accessible message lists.
  • Producer Implementation: Implemented a new Producer to facilitate sending messages, streamlining the message creation process.
  • Support for DLQ Reception: Added support for receiving messages from the Dead Letter Queue (DLQ), enhancing message handling capabilities.
  • New 'Invalid' Subcommand: Introduced an 'invalid' subcommand, expanding the command-line interface's functionality.
  • Test Suite Enhancements:
    • Unified and streamlined test cases for error handling and specific error types like IDNotProvidedError.
    • Merged related test cases into single functions for improved readability and maintenance.
    • Enabled parallel execution of unit tests to speed up the testing process.
  • Function Refactorings:
    • Reduced cognitive complexity in multiple functions like GetDLQStats, GetQueueStats, and ReceiveMessage.
    • Standardized test cases by defining common structures.
    • Optimized data seeding methods in tests for more efficient setup.
    • Transformed callback-based operations to simpler structures to reduce code nesting.
  • General Improvements:
    • Removed duplicating literals and replaced them with constants.
    • Adopted assertDeepEqual and assertError for more robust testing.
    • Renamed and privatized message-related methods for better encapsulation.
    • Organized imports and renamed key files for improved code clarity.

Full Changelog: v0.9.0...v0.10.0

v0.9.0

09 Nov 22:13
Compare
Choose a tag to compare
  • Comprehensive README Updates: The README has been significantly enhanced with detailed sections.
  • Producer Implementation: Implemented a Producer feature to enable sending messages.
  • Consumer Function Renaming: Renamed the Listen function to StartConsuming in the Consumer module for better clarity.
  • Method and File Refactoring: Made message-related methods private and renamed sdk.go to client.go for improved code organization.
  • Import Sorting: Sorted imports in test files for better code style.
  • Dead Letter Queue (DLQ) Support: Added support for receiving messages from the DLQ, enhancing the robustness of message handling.

Full Changelog: v0.8.0...v0.9.0

v0.8.0

02 Nov 22:42
Compare
Choose a tag to compare
  • Subcommand Expansion: Enhancing our command suite, we have introduced several new subcommands to streamline operations:

    • invalid for marking messages that cannot be processed
    • fail to handle failed operations more efficiently
    • delete to remove items from queues
    • reset to revert settings to their original state
    • redrive to reprocess messages that require attention
    • ls get for listing and retrieving messages
    • receive to get messages from the queue
    • enqueue-test to add test messages to the queue
    • ls for listing messages within a queue
    • purge to clear messages from the queue
    • dlq to manage the dead-letter queue
    • qstat for querying the status of the queues.
  • Codebase Improvements: We've made significant strides in improving the code structure:

    • Removed unnecessary whitespace for cleaner code.
    • Decoupled interactive processing and print functions from root.go for better modularity.
    • Enabled external specification of ClientQueueingIndexName to the dynamomq.Client for enhanced customization.

Full Changelog: v0.7.0...v0.8.0

v0.7.0

31 Oct 08:46
Compare
Choose a tag to compare
  • DynamoMQ CLI: Rewritten using spf13/cobra for an enhanced CLI experience.
  • Datetime Format: Changed datetime format to RFC 3339 Nano for higher precision.
  • AWS Authentication: Streamlined the authentication process, removing redundant code.
  • Rename Client Functions:
    • Put has been renamed to ReplaceMessages with an updated signature.
    • List has been renamed to ListMessages with an updated signature.
    • Get has been renamed to GetMessage and its signature updated.
    • Redrive has been renamed to RedriveMessage and its signature updated.
    • Retry has been renamed to UpdateMessageAsVisible and its signature updated.
    • Peek has been renamed to ReceiveMessage and its signature updated.
    • Enqueue has been renamed to SendMessage and its signature updated.
    • SendToDLQ has been renamed to MoveMessageToDLQ and its signature updated.
    • Delete has been renamed to DeleteMessage and its signature updated.
    • GetDLQStats and GetQueueStats functions have updated signatures.
  • Removals Client Functions:
    • Removed Message's Touch function.
    • Removed Client's Touch, Upsert, ListIDs, and ListExtendedIDs functions.
  • Refactoring:
    • Addressed discrepancies between test functions and function names.
    • Merged result.go and stats.go into sdk.go for better organization.

Full Changelog: v0.6.0...v0.7.0

v0.6.0

27 Oct 21:26
Compare
Choose a tag to compare

These updates aim to enhance the code's readability and maintainability. With the new validation feature, users can now preemptively detect potential errors related to message state transitions.

  • Code Refinement: Removed a redundant Get function call within the peek function.
  • Method Name Updates: Renamed the state transition-related methods for clarity.
  • New Feature: Introduced validation for message state transitions, ensuring appropriate state progression.
  • Client Renaming and Updates:
    • Renamed QueueSDKClient to Client for simplicity.
    • Updated the constructor name for improved clarity.
    • Modified function options for both Client and Consumer to enhance usability.
  • Data Type Adjustment: Changed the type of Message.Data from pointer to value, optimizing data handling.

Full Changelog: v0.5.0...v0.6.0

v0.5.0

26 Oct 04:10
Compare
Choose a tag to compare

Full Changelog: v0.4.0...v0.5.0

v0.4.0

26 Oct 00:51
Compare
Choose a tag to compare

Full Changelog: v0.3.1...v0.4.0

v0.3.1

23 Oct 09:32
Compare
Choose a tag to compare

Full Changelog: v0.3.0...v0.3.1