such a simple example of a ticket seller application.
A sample similar to the akka in action book.
requires PHP 8.3 or later, and swoole extension.
アクターは下記の通りです。
graph LR
Root --> BoxOffice
BoxOffice --> TicketSeller
Box Officeがチケット販売を行い、Ticket Sellerがチケットを作成します。
Ticket Sellerはイベントごとに存在します。
これらはすべて並行して動作し、それぞれのアクターは隔離されています。
graph LR
Root --> BoxOffice
BoxOffice --> TicketSeller1
BoxOffice --> TicketSeller2
BoxOffice --> TicketSeller3
場合によってはTicket SellerからBoxOfficeを経由せずにRootに直接メッセージを送ることもあります。
# example
$ ./vendor/bin/laminas mezzio:swoole:start -w 1
サーバはデフォルトで8080ポートで起動します。
好きなイベントのチケットを作成しましょう
イベント名をパスで指定し、ticketsに作成するチケットの枚数を指定します。
好きなだけチケットを作ってください。
ただし同じイベント名のチケットは作成できません。
アクターが重複をチェックしています。
チケットはメモリに保存されますので、停止すると消えます
$ curl --request POST \
--url http://127.0.0.1:8080/events/frank_zappa_live1985 \
--header 'Content-Type: multipart/form-data' \
--form tickets=40
作成されたチケットを取得します。
イベント名とチケット枚数が返ってきます。
$ curl --request GET \
--url http://127.0.0.1:8080/events
作成されたチケットを一件取得します。
$ curl --request GET \
--url http://127.0.0.1:8080/events/frank_zappa_live1985
作成済みのチケットを削除します
$ curl --request DELETE \
--url http://127.0.0.1:8080/events/frank_zappa_live1985