Skip to content
Challenge project for Aftership
JavaScript
Branch: master
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.
handlers
README.md
apixe.js
config.js
database.js
package.json
peak.js
producer.js
remove.js
server.js

README.md

Introduction

  • Gets USD to HKD exchange rate once every minute, stores 10 succesful results in MongoDB.
  • After 3 failed attempts, aborts.
  • System is scalable horizontally as long as every worker gets different id and has connection to same Beanstalkd tube and same MongoDB.
  • May require updating xe.com custom API in case if xe.com decides to change their HTML structure.

Files

  • ./server.js

Initiates worker node.

  • ./producer.js

Used only to seed the initial task.

  • ./peak.js

Simple admin tools, let's see if there is a job delayed in the queue.

  • ./remove.js

Simple admin tools, let's see if there is a job delayed in the queue and removes it.

  • ./database.js

Contains all access functions to MongoDB, it is done the way allowing not reconnecting at each request (connection pool)

  • ./apixe.js

Custom API to access xe.com service.

  • ./handlers/getrates.js

Handler that performs processing of task obtained from Beanstalkd tube.

Dependencies

  • soupselect, htmlparser and http for custom xe.com API.
  • fivebeans for worker, peak and producer, to access Beanstalkd queue.
  • mongodb for accessing MongoDB database.

Remarks

  • System is designed to store 10 succesful readings, restarting without clearing record collection will not allow storage 10 new readings.
  • Processing is stopped after 3 failures, not necessarily 3 consecutive failures.
  • Database is called test, records are stored in aftership collection and failed attempts in failures collection, failures are purged once processing ends.
You can’t perform that action at this time.