# README # This repo is meant to be a drop-in replacement for the [vendor-scheduler-service](https://bitbucket.org/outfrontmedia/vendor-scheduler-service/src/master/) built in Ruby. It is part of the overall [programmatic design](https://outfrontmedia.atlassian.net/wiki/spaces/OSP/pages/3008430113/Engineering+Design+for+Programmatic) for ONEX. ## Dependencies [RabbitMQ](https://www.rabbitmq.com) is used as the message queue for communication from and to ONEX. For local development, you can use the Docker image by running this command: ```shell docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3.9-management ``` After running, that you can access the management interface at http://localhost:15672 using the user name and password of `guest`. ## Benchmark process > NOTE: Make sure `ulimit -n` is set appropriately. For example, if you expect to have 1000 concurrent connections, it should be higher than that. `fake_server` is a simple web server that returns a JSON response in a randomized time of 200 - 800 milliseconds. You can adjust that interval to experiment with different upstream API response times. `go run fake_server/fake_server.go` `fill_queue` will seed 15,000 simulated ONEX messages on the queue. You can adjust this number as needed `ONEX_QUEUE_URL="amqp://guest:guest@localhost:5672/" go run fillqueue/main.go` `main.go` pulls messages off the queue and makes a call to the fake server for each one. You can tweak the number of queued messages and the maximum number of parallel HTTP connections. `ONEX_QUEUE_URL="amqp://guest:guest@localhost:5672/" VISTAR_API_URL="http://localhost:8090" go run vendorscheduler/main.go` * Database configuration * How to run tests * Load testing * Deployment instructions