kuzznya

ActionFlow prototype config

Jul 1st, 2021
1,582
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
YAML 2.12 KB | None | 0 0
  1. name: auth-service
  2. type: service # by default 1 instance, permanent
  3. deployment:
  4.   image: repo/auth-service:latest
  5. handlers: # или все-таки triggers
  6.   - request: POST /api/v1/auth
  7.     handler: web # pass as web request
  8.   - request: POST /api/b1/auth
  9.     handler: authHandler
  10. dependencies:
  11.  - user-storage
  12.  
  13. ---
  14. name: user-storage
  15. type: storageController # idk if it is a good solution, because then you cannot use SQL in auth-service, for example. Maybe better define there just config (sth like storageConfig) of DB to inject it into dependant services
  16. deployment:
  17.   instances: 1
  18. config:
  19.   driver: postgres
  20.   url: user-db:5432
  21.  
  22. ---
  23. name: email-task
  24. type: task
  25. deployment:
  26.   image: repo/email-task:latest
  27.   instances: 1-10
  28. max-concurrency: 10 # max concurrent tasks per instance
  29. triggers:
  30.   - type: http-request
  31.     request: POST /api/v1/email
  32.     handler: emailWebSender # handle web requests
  33.     max-concurrency: 5 # this value is more important, max concurrent executions for handler
  34.   - type: message
  35.     message: send_email # topic of message, or maybe better message.topic:
  36.     if: ${ event.message.body != null }
  37.     handler: emailKafkaSender # handle Kafka messages (or RabbitMQ, idk)
  38.   - type: send_email # Maybe it would be better to handle Kafka messages like this, or to use both ways. This way allows to create custom triggers
  39.     if: ${ event.body != null }
  40.     handler: emailEventListener
  41.  
  42. ---
  43. name: auditor
  44. type: service
  45. deployment:
  46.   image: repo/auditor:latest
  47.   instances: 1-3
  48. triggers:
  49.   - type: cron
  50.     cron: 0 0 * * * *
  51.     max-concurrency: 1
  52.     handler: startAudit
  53.   - type: price-changed
  54. dependencies:
  55.  - user-storage
  56.   - log-storage
  57.   - some-other-storage
  58.  
  59. ---
  60. name: websiteCrawler
  61. type: eventSource
  62. deployment:
  63.   image: repo/site-crawler
  64.   instances: 1
  65. produces:
  66.  - price-changed
  67.  
  68. ---
  69. name: repoWatcher
  70. type: repoWatcher
  71. # No deployment settings required by default because of type
  72. config:
  73.   url: ${GIT_URL}
  74.   username: ${GIT_USERNAME} # not required for public repos
  75.   password: ${GIT_PASSWORD} # or maybe token
  76.  
  77. ---
  78. name: CI/CD
  79. type: task
  80. deployment:
Advertisement
Add Comment
Please, Sign In to add comment