https://github.com/jafaripur/php-microservice-application
php-microservice skeleton console application starter for microservice node with Spiral framework.
https://github.com/jafaripur/php-microservice-application
amqp microservice php rabbitmq roadrunner spiral
Last synced: 5 months ago
JSON representation
php-microservice skeleton console application starter for microservice node with Spiral framework.
- Host: GitHub
- URL: https://github.com/jafaripur/php-microservice-application
- Owner: jafaripur
- License: mit
- Created: 2022-01-24T10:46:42.000Z (about 4 years ago)
- Default Branch: master
- Last Pushed: 2022-08-18T11:07:02.000Z (over 3 years ago)
- Last Synced: 2025-03-31T05:11:31.247Z (about 1 year ago)
- Topics: amqp, microservice, php, rabbitmq, roadrunner, spiral
- Language: PHP
- Homepage:
- Size: 504 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Microservice Application Skeleton


`Spiral` console application used to write our processors of methods to responsible to client calling.
This application a template for microservice application and implement four methods of [jafaripur/php-microservice](https://github.com/jafaripur/php-microservice). Another library created for using this microservice methods [jafaripur/php-microservice-user-service](https://github.com/jafaripur/php-microservice-user-service).
For consuming and receiving data:
```bash
php app.php user-service/listen
```
For sending tests messages, By using this client library (`jafaripur/php-microservice-user-service`):
```bash
php app.php user-service/send-test
```
## Create project
```bash
composer create-project "jafaripur/php-microservice-application dev-master" micro3
```
## Production Build
This application can be run with `roadrunner` service plugin in production with Dockerfile `docker/Dockerfile.prod`, Production build with docker:
```bash
export DOCKER_BUILDKIT=1 && docker build -f "./docker/Dockerfile.prod" -t "micro3-prod:latest" .
```
After building, we can create a container or docker swarm service. The production docker image runs with `RoadRunner`. In this example we use this configuration for [RoadRunner](https://github.com/roadrunner-server/roadrunner), config exist in `.rr.yaml` file.
```yml
version: "2.7"
service:
topics:
command: "php ./app.php user-service/listen first-consumer"
process_num: 10
exec_timeout: 0
remain_after_exit: true
restart_sec: 5
emits:
command: "php ./app.php user-service/listen second-consumer"
process_num: 2
exec_timeout: 0
remain_after_exit: true
restart_sec: 5
logs:
mode: production
encoding: console
```
With this RoadRunner service plugin we can run several consumer with several instance.
For creating docker container from builded image:
```bash
docker run -d --init \
--name micro3-container \
--restart unless-stopped \
micro3-prod:latest
```
And for swarm service:
```bash
docker service create --name "micro3-service" \
--replicas 2 \
--update-delay 10s \
micro3-prod:latest
```
## Test
```bash
# Run test
docker-compose up --build micro
# Stop and remove created containers
docker-compose down
```