An asynchronous messaging example for third-party service integration
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci
ansible
app
bin
config
docker
src
var
web
.codeclimate.yml
.gitignore
Capfile
Gemfile
Gemfile.lock
LICENSE
Makefile
README.md
composer.json
composer.lock
docker-compose.yml
phpunit.xml.dist

README.md

CircleCI Code Climate

Purpose

This project is to demonstrate the way to integrate application with third-party services by using asynchronous messaging (Background Worker & Message Queue). It also shows how to use ansible for provisioning and auto CI/CD pipeline by using CircleCI and Ansistrano.

How does this project work?

The demo

The application will save the form data into the database and push a message to AWS SQS after form submission. A background worker keeps running to poll the message from SQS and process it (pushing a new tweet to twitter in this case). This is a typical use case that "when something happens, we need to do a,b,c...". We can process a,b,c... in either a synchronous or asynchronous way which depends on your business rules.

Read my post for more explanations

Tools used by this project

  • Redis - it is used to determine whether to restart the background worker. It is inspired by Laravel Queue.
  • Supervisor - it is used to auto-restart workers if they are stopped by any exception.