maleficarum/worker

13.2.0 2022-08-29 14:29 UTC

README

这是Maleficarum Worker组件的实现。

[13.2.0] - 2022-08-29

新增

  • 更新rabbitmq组件到版本12.1.0

[13.1.0] - 2021-01-29

新增

  • 死信连接可以通过注册表设置

[13.0.1] - 2021-01-20

修复

  • 将rabbitmq组件提升到版本12.0.0

[13.0.0] - 2021-01-20

新增

  • 添加了对未处理异常的支持

[12.1.0] - 2020-10-29

新增

  • 添加了对延迟重试的支持

[12.0.0] - 2020-06-05

变更

  • 将命令组件提升到4.x版本

[11.0.0] - 2020-06-04

新增

  • 更新了死信封装器,以便在死信头中提供错误消息、时间戳和处理ID。

    默认情况下,时间戳和处理ID将添加到头中。为了保留错误消息,必须在工人的代码中调用命令对象的新函数 $command->addError(string $error),在命令处理器的main try-catch块中是最常见的场景。
public function handle(): bool {
    $command = $this->getCommand();
    ...
    
    try {
     // handle command
     } catch (\Throwable $e) {
        $this->logException($e);
        $command->addError($e->getMessage());
        return false;
     }
     
     return true;
}

[10.0.1] - 2020-02-18

新增

  • 添加了关于内存使用的信息

[10.0.0] - 2020-02-18

修复

  • 将maleficarum/rabbitmq版本提升到10.0.0

[9.3.1] - 2020-02-06

修复

  • application_headers键不存在时返回空数组

[9.3.0] - 2020-02-04

新增

  • 将amqp头添加到命令中

[9.2.0] - 2019-09-02

新增

  • 添加了对testMode命令参数的支持

[9.1.2] - 2019-04-25

修复

  • 添加沙盒环境

[9.1.1] - 2019-02-04

修复

  • 调试封装器中的内存格式不正确

[9.1.0] - 2019-01-29

新增

  • 添加调试封装器
  • 为Worker处理器添加debug特性

当处理器有\Maleficarum\Worker\Handler\Encapsulator\Debugger并使用\Maleficarum\Worker\Handler\Encapsulator\Debugger\DebugTrait时,可以在处理器代码中使用方法$this->debug(string $message, array $options)。在日志中会有一个额外的调试条目,如[DEBUG] 1. {"message":"This is a test message","time":"2,408634 sec.","memory":"0,000584 MB"}。每条消息都会自动添加执行时间和内存使用信息。

示例

[9.0.0] - 2018-10-05

变更

  • 升级IoC组件到3.x版本
  • 升级phpunit版本
  • 从composer文件中删除了仓库部分
  • 修复了单元测试

[8.0.0] - 2018-06-18

变更

  • 引入了自适应多源消费者模式
    • 此模式替换了之前的多个源消费者模式。
    • 这极大地提高了优先级系统的可靠性 - 现在具有更高优先级的队列在控制权传递给低优先级队列之前将有一个固定的时间来提供下一个命令消息,但与之前的实现不同,新的命令将一有可用就处理,而不是在处理器之间有固定的等待时间。这样,在需要优先级切换之前,不会对携带多个命令的队列造成性能影响。
    • 优先级切换之间的宽限期可以通过参数定义,默认值为0.1秒。在单源模式下,此参数被忽略。

[7.2.0] - 2018-06-14

变更

  • 在7.1.2中添加的等待期现在不再是必需的,可以通过进程初始化方法进行参数化。

[7.1.4] - 2018-05-17

变更

  • 将多源消费者模式中的硬编码等待值增加到10000微秒。

[7.1.3] - 2018-05-14

修复

  • 不通过内部验证的命令将不再在Deadletter和Retry封装器中引发未捕获的异常。

[7.1.2] - 2018-05-14

新增

  • 在多源消费者模式下,在尝试从头开始执行主进程循环时添加了强制等待期。这将在未来的版本中进行参数化 - 目前它是一个硬编码的等待值。

[7.1.1] - 2018-04-10

修复

  • README条目中的日期格式不正确。

[7.1.0] - 2018-04-10

新增

  • 添加了一个新的封装器:"Retry",它将尝试重新入队失败的命令特定次数。
  • 重新引入了到抽象处理器的addCommand和addCommands辅助方法。[注意:它们有一个新的接口]

变更

  • 信息封装器现在将在初始日志条目中包含消息元数据信息。

[7.0.1] - 2018-04-09

变更

  • 在Deadletter封装中增加了额外的保护,防止在死信连接配置错误时工作进程退出。

[7.0.0] - 2018-04-06

变更

  • 增加了多源消费者模式。
    • 现在可以从多个独立连接的多个源队列中消费命令,而不会阻塞其他连接。
    • 每个连接/队列都有自己的优先级,可以通过配置文件设置。
    • 具有相同优先级的队列将按轮询方式提供服务。
    • 只有当所有更高优先级的队列都已清空时,才会使用较低优先级的队列。
  • 重新设计了工作实现,以使用新的Maleficarum RabbitMQ连接管理器。
    • 持久连接将自动添加为命令源,并在定义了多个连接时触发多源消费者模式。
    • 瞬态连接将通过连接管理器在命令处理器中可用,以便轻松将命令添加到外部队列。
  • 完全重新设计处理器的操作方式。
    • 添加了对rabbitmq连接管理器的访问,以便轻松传播命令。
    • 实现了处理器封装逻辑。这样,每个单独的处理器都可以定义一个在处理过程前后希望调用的封装器列表。
    • 为特定应用程序的封装器实现添加了封装器接口。
    • 实现了“信息”封装器 - 它将基本的命令处理信息添加到日志中。
    • 实现了“死信”封装器 - 当处理器返回false作为处理结果时,它将命令添加到死信队列中。

[6.0.1] - 2017-11-14

变更

  • 更改getWorkerId方法的可见性。

[6.0.0] - 2017-08-03

变更

[5.1.0] - 2017-05-10

新增

  • 将配置传递给处理器对象。

[5.0.0] - 2017-04-06

变更

  • 提高组件版本。
  • 将外部组件的默认初始化器移入那些组件 - 它们不再定义在此项目中。
  • 添加了内部构建定义和一种机制,可以在特定初始化器中跳过它们的加载。
  • 将引导初始化功能解耦从主引导对象。目前,在使用引导对象时,可以在初始化过程执行时提供一系列有效的PHP可调用类型,这些类型将按顺序运行。
  • 默认引导初始化器已从主类中分离出来,作为静态方法使用,以便在必要时按情况使用。

[4.0.1] - 2017-03-08

变更

  • 提高rabbitmq组件版本。

[4.0.0] - 2017-03-07

变更

  • 提高rabbitmq组件版本。

[3.0.2] - 2017-02-22

变更

  • 提高处理器组件版本。
  • 使用新的命令行处理器。
  • 添加测试。

[3.0.1] - 2017-02-13

修复

  • 更改抽象命令类的命名空间。

[3.0.0] - 2017-01-30

变更

  • 将命令组件移动到外部存储库。

[2.0.0] - 2017-01-30

变更

  • 添加返回和参数类型声明。

[1.0.0] - 2017-01-10

新增

  • 这是一个基于pharaun13编写的代码的初始发布,并由我添加到存储库中。