frzb/transactional-messenger

TransactionalMessenger组件允许将消息传递操作变为事务性

v1.5.0 2024-08-12 23:19 UTC

This package is auto-updated.

Last update: 2024-09-12 23:51:52 UTC


README

Workflow Build Status Scrutinizer Code Quality Code Intelligence Status Build Status Coverage Status Quality Gate Status Bugs Security Rating Maintainability Rating Code Smells Lines of Code Coverage Technical Debt Reliability Rating Duplicated Lines (%) Vulnerabilities

Transactional Messenger组件允许将消息传递操作变为事务性

安装方法

推荐通过Composer进行安装

composer require frzb/transactional-messenger

它需要PHP版本8.2及以上。

使用#[Transactional]

#[Transactional]将自动为您的消息创建和关闭事务,默认的CommitTypeCommitType::OnTerminate

提交类型

  • CommitType::OnTerminate针对请求,在响应发送且没有异常时执行
  • CommitType::OnResponse针对请求,在请求结束且没有异常时执行
  • CommitType::onHandled针对消费者,在消息成功处理时执行

事件

  • FRZB\Component\TransactionalMessenger\Event\DispatchSucceedEvent在消息分发时执行
  • FRZB\Component\TransactionalMessenger\Event\DispatchFailedEvent在消息失败时执行

示例

<?php

use \FRZB\Component\TransactionalMessenger\Attribute\Transactional;

#[Transactional]
final class CreateUserMessage {
    public function __construct(
        public readonly string $id,
        public readonly string $name,
    ) {
    }
}

资源

贡献

Alt