healios/core

该包最新版本(v1.0.17)没有可用的许可证信息。

Core Healios类用于symfony集成

该包的规范仓库似乎已不存在,因此该包已被冻结。

安装: 454

依赖项: 0

建议者: 0

安全: 0

类型:symfony-bundle

v1.0.17 2023-12-29 11:06 UTC

This package is auto-updated.

Last update: 2024-01-29 11:24:26 UTC


README

核心包是一个可重用的库,它为构建项目中的微服务提供基本功能和常用类。它通过促进代码重用和维护共享功能,作为开发一致和高效的微服务的基础。

安装

要在Symfony项目中安装此包,请运行composer require healios/core

目的

核心包旨在

  • 减少微服务之间的代码重复。
  • 确保类结构、接口和常见操作的统一性。
  • 提供一个集中位置,用于存储常用类和工具。

关键类

查询和查询处理器

查询接口表示微服务内的只读操作或数据检索请求。

使用方法:要实现新的查询,创建一个实现了查询接口的类,并定义必要的属性和方法。相应的查询处理器应实现执行查询和返回所需数据的逻辑。

命令和命令处理器

命令接口表示写操作或修改系统状态或触发微服务内的副作用。

使用方法:要实现新的命令,创建一个实现了命令接口的类,并定义所需属性和方法。相应的命令处理器应实现处理命令和执行必要操作的逻辑。

存储库

AbstractDoctrineRepository是一个基类,它为使用Doctrine ORM(对象关系映射)实现存储库提供基础。它包括常见功能和模板代码,减少了设置和管理存储库所需的工作量。

使用方法:要为特定实体创建存储库,扩展AbstractDoctrineRepository类并根据您的微服务需求进行自定义。根据需要实现查询、过滤、排序和分页的附加方法。

查询参数

QueryParams类提供了一种标准化的方式将查询参数传递给查询处理器。它封装了可以应用于查询结果的各个筛选、排序和分页选项。

使用方法:扩展BaseQueryParams类以创建针对您的微服务查询需求的特定QueryParams类。通过添加表示支持的查询参数及其验证规则属性和方法来自定义该类。

Messenger + 扇出事件和命令

对于我们的事件,我们在RabbitMQ中使用扇出类型,以便可以在不同的微服务之间传播消息,并且事件可以在多个微服务中被消费,但不是所有微服务。

要处理不需要在特定微服务中消费的消息的情况,我们使用自定义的Serializer + UnknownEvent + UnknownEventListener(如有必要,您可以扩展它)。同样也适用于命令。

以下是一个使用自定义序列化器的示例

NNNN_amqp_command_transport:
  dsn: '%env(ENQUEUE_DSN)%'
  serializer: healios_core.messenger.command_serializer
  options:
    exchange:
      name: ex_command
      type: fanout
    queues:
      NNNN_amqp_command_transport: ~
NNNN_amqp_event_transport:
  dsn: '%env(ENQUEUE_DSN)%'
  serializer: healios_core.messenger.event_serializer
  options:
    exchange:
      name: ex_event
      type: fanout
    queues:
      NNNN_amqp_event_transport: ~

注意:需要symfony/amqp-messenger的最小版本为6.3.4。

实现和扩展指南

一致性:确保新类实现遵循核心包中建立的约定和模式。遵循一致的命名规范,使用适当的接口,并保持关注点的清晰分离。

模块化:努力实现组件之间的松散耦合,并保持模块化结构。避免过度依赖,通过保持类独立和专注于特定职责来促进可复用性。

可扩展性:设计类和接口时考虑可扩展性。考虑潜在的未来的需求,并允许在不修改核心功能的情况下方便地进行扩展和定制。

文档:记录添加到核心包中的每个类或工具的目的、用法和任何特定考虑事项。提供清晰的示例和指南,以促进开发人员在微服务项目中理解和采用。

测试:确保核心包以及任何新引入的类或修改都有适当的测试覆盖率。编写单元测试以验证类和工具的行为和功能。