Tags: ThreeDotsLabs/watermill
Tags
feat: make the retry middleware more flexible (#582) Retryable errors are typically caused by transient failures such as timeouts or connection issues. However, there may be cases where certain errors are known to be non-retryable, for example, malformed input messages. This change adds a ShouldRetry parameter to the retry middleware configuration, allowing clients to explicitly define which errors should be retried and which should not.
Router: publish messages in bulk (#513) Currently, the router will publish produced messaged by calling Publish individually, even though the bulk API exists. This change works the same, although it can be handy for some custom implementations when you want to treat the produced messages as a group. For some implementations, it could also slightly improve publish performance.
Requeuer and Message Delay (#469) * Added the `Requeuer` component. * It works as a simpler version of the Forwarder, routing messages from one topic to another (a dynamic one). * Can be used to move messages that failed to process back to the original topic, so they don't block other messages. * Can be used together with the poison middleware and the `delay` component to delay the forwarding. * Added the `delay` package. It contains helpers for setting delay metadata on messages. * **Does not do anything by itself.** A Pub/Sub needs to support it explicitly. For now, that's the delayed postgres Pub/Sub implemented in ThreeDotsLabs/watermill-sql#34 * Use case 1: publishing a message after a given delay or at given time (see the example). * Use case 2: automatically moving messages out of the poison queue to the original topic after a delay (used together with the `Requeuer` component). * Added the `pq` CLI tool for working with poison queues.
PreviousNext