Releases: vvatanabe/dynamomq
Releases · vvatanabe/dynamomq
v0.11.0
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 theinvisible_until_at
field and added aretryInterval
parameter to theConsumer
. - 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 andClientOptions
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 toClientImpl
. - 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
inRedriveMessageInput
. - Fixed the
go test
command to includetee
forresult.json
output in continuous integration settings. - Addressed an issue with unnecessary trailing newlines and applied
goimports
tomessage_test.go
for code styling.
Full Changelog: v0.10.1...v0.11.0
v0.10.1
- 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
- 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.
- Unified and streamlined test cases for error handling and specific error types like
- Function Refactorings:
- Reduced cognitive complexity in multiple functions like
GetDLQStats
,GetQueueStats
, andReceiveMessage
. - 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.
- Reduced cognitive complexity in multiple functions like
- General Improvements:
- Removed duplicating literals and replaced them with constants.
- Adopted
assertDeepEqual
andassertError
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
- 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 toStartConsuming
in the Consumer module for better clarity. - Method and File Refactoring: Made message-related methods private and renamed
sdk.go
toclient.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
-
Subcommand Expansion: Enhancing our command suite, we have introduced several new subcommands to streamline operations:
invalid
for marking messages that cannot be processedfail
to handle failed operations more efficientlydelete
to remove items from queuesreset
to revert settings to their original stateredrive
to reprocess messages that require attentionls get
for listing and retrieving messagesreceive
to get messages from the queueenqueue-test
to add test messages to the queuels
for listing messages within a queuepurge
to clear messages from the queuedlq
to manage the dead-letter queueqstat
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 thedynamomq.Client
for enhanced customization.
Full Changelog: v0.7.0...v0.8.0
v0.7.0
- 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 toReplaceMessages
with an updated signature.List
has been renamed toListMessages
with an updated signature.Get
has been renamed toGetMessage
and its signature updated.Redrive
has been renamed toRedriveMessage
and its signature updated.Retry
has been renamed toUpdateMessageAsVisible
and its signature updated.Peek
has been renamed toReceiveMessage
and its signature updated.Enqueue
has been renamed toSendMessage
and its signature updated.SendToDLQ
has been renamed toMoveMessageToDLQ
and its signature updated.Delete
has been renamed toDeleteMessage
and its signature updated.GetDLQStats
andGetQueueStats
functions have updated signatures.
- Removals Client Functions:
- Removed
Message's Touch
function. - Removed
Client's Touch
,Upsert
,ListIDs
, andListExtendedIDs
functions.
- Removed
- Refactoring:
- Addressed discrepancies between test functions and function names.
- Merged
result.go
andstats.go
intosdk.go
for better organization.
Full Changelog: v0.6.0...v0.7.0
v0.6.0
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 thepeek
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
toClient
for simplicity. - Updated the constructor name for improved clarity.
- Modified function options for both
Client
andConsumer
to enhance usability.
- Renamed
- 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
Full Changelog: v0.4.0...v0.5.0
v0.4.0
Full Changelog: v0.3.1...v0.4.0
v0.3.1
Full Changelog: v0.3.0...v0.3.1