mrandmrssmith/idempotent-consumer-bundle

idempotent-consumer-bundle

1.0.0 2024-08-29 11:27 UTC

This package is auto-updated.

Last update: 2024-08-30 10:02:33 UTC


README

这是幂等消费者核心包。它提供了基本功能,使您的消费者能够实现幂等。

安装

将此包添加到您的项目中

composer require mrandmrssmith/idempotent-consumer-bundle

用法

  1. 结构
    • Persistance - 提供持久化接口
    • Resolver - 应用于从消息和注册表中检索幂等键的接口
    • Checker - 主要服务,用于在消息进入时处理幂等逻辑。您应该在消息处理之前使用此检查器,并根据检查结果决定是否处理消息
    • Finalizer - 主要服务,用于在消息退出时处理幂等逻辑。您应该在消息处理之后使用此终结器来标记消息为已处理或当消息失败时。
  2. 实现 Persistance 接口
    • 您可以通过实现这些接口并在服务中注册它们来自定义持久化
    • mrandmrssmith/idempotent-consumer-doctrine-persistence-bundle 提供了一个现成的持久化解决方案,该解决方案使用 doctrine 来提供持久化层
  3. 解析器
    • 您必须为您的消费者实现键解析器。
    • 它作为策略模式工作。您必须注册您的解析器并添加标签 idempotent.key_resolver
  4. 检查器和终结器
    • 您必须在消息进入时使用这些服务与您的消费者检查器配合,并在消息处理后的终结器中使用
    • 您可以使用 symfony messenger 的包 mrandmrssmith/idempotent-symfony-messenger-consumer-bundle
  5. 设置
    • 默认情况下,状态为失败的失败消息将被跳过,但您可能希望再次处理具有失败状态的失败消息,因此有此两种选项
    • 第一个选项是为此包配置设置 process_failed_messages 为 true
       mms_idempotent_consumer:
         process_failed_messages: true
    这将更改 DefaultProcessFailedMessageVoter$wantToProcessFailedMessage 的默认值(false)为您在这里设置的值
    • 第二个选项是实现自己的投票者 - 这可能是当您想要实现自己的逻辑来决定是否再次处理此消息时的解决方案
       mms_idempotent_consumer:
         custom_process_failed_messages_voter: id_of_your_voter_service
    您可以替换默认投票者以您的 ProcessFailedMessageVoter 实现替换,这为您提供了对处理失败消息的完全控制。