zwei/event-worker-app

事件工作器项目应用

dev-2.x-dev 2018-07-12 09:49 UTC

This package is auto-updated.

Last update: 2024-09-06 12:55:22 UTC


README

Event Worker App 是Event Worker的示例

业务频繁变动,频繁增减活动,导致开发修改现有业务逻辑,造成程序混乱,质量无法保证。同时也导致测试进行了大量重复且不必要的测试,从而浪费了大量人力成本,并不能达到预期的结果。

注意

Event Worker 当前版本只针对中小型企业,因为部署简单,你可以快速安装和使用。之后会有 Event Worker RabbitMQ,它是为大型企业和高并发业务场景设计的。

使用场景

  1. 主要业务不变,一些像活动、注册、登录、购买送积分、发短信等
  2. saas平台为每个客户部署环境,很多公司使用docker快速部署环境,环境创建后会导入sql,但可能创建成功事件不确定,我们可以发送一个import_event事件来解决这个问题

案例

1. 用户注册

这个月是送积分,可能下个月送红包

2. 比如活动,每次节假日的活动规则不一样
  1. 3.8妇女节,女性用户登录(可以获得专属优惠券,购买商品后可以获得额外返现或者双倍积分等规则)
  2. 5.1劳动节邀请好友(获得实物大礼包,好友购买商品,送2元红包,1.5倍积分,邀请人获得3元红包,10个积分),购买商品送劳动币。
  3. 国庆节活动登录、注册、购买商品送爱国币。

问题:

  1. 登录送积分、送红包
  2. “5.1”劳动节购买商品送劳动币等
  3. 国庆登录、注册、购买送爱国币

在这个场景中,实际上登录、购买、邀请好友等逻辑没有变化,每次活动或需求程序员都需要根据需求不断修改业务逻辑,每次修改业务逻辑,测试都需要进行一些重复的测试,那么有没有办法简化这个过程呢。

解决方案:

我们使用事件(Event),在注册、登录、购买、邀请好友等操作中都发送相应的事件(注册register_event、登录login_event、购买product_buy_event、邀请好友inviting_friend_event),我们可以监听不同的消费者监听同一事件,例如我们登录要送积分,国庆登录又要送爱国币,那么登录(login_event)事件同时要送积分和爱国币,我们可以分别写2个消费者去监听登录事件,一个登录送积分消费者,一个国庆消费者送爱国币,当国庆结束我们可以停止国庆消费者,而不必关闭登录送积分消费者

开发文档

开发文档

流程图

单元测试使用

--bootstrap 在测试前先运行一个 "bootstrap" PHP 文件

  • --bootstrap 引导测试: phpunit --bootstrap vendor/autoload.php tests/
  • --bootstrap 引导测试: phpunit --bootstrap tests/TestInit.php tests/