1. Cognito Ltd
A Year In Industry
Philip Sewell
Middleware Software Developer
Bug fixing
Data fixing
Database work
Implementing new features
Providing support / Responding to
emergencies
During my time with Cognito I was a Software
Developer on the Middleware team within the
Product Research and Development department
- this could be considered as being the “heart”
of the company in the sense that we need to
look after the software which make up the
entire back-end system.
My roles included:
The Rabbit Retry Service Project
Cognito use the Advanced Message Queueing Protocol (AMQP) for reliable and
quick message delivery and processing. To help assist, the open source messaging
solution RabbitMQ is used by all of the middleware components - this is
integrated with the Spring framework for ease of use and maintainability.
Main issues identified:
If the next message in the queue fails to process (termed a DLQ) then this
is put to the front of the queue again
The component will constantly retry the failed message, potentially pre-
venting a backlog of “good” messages to be processed behind it
There is no way to edit the message before a retry, so the chances are the
same message will fail consistently
Agile Software Development
The solution:
If a message fails to process, eject it from the queue and send it to a new
component listening on a different Rabbit exchange
The new component will store the message in a database, ready for
processing/modification
The Retry Service will poll the database and send messages back to their
original queue (retry) for a defined number of times before being marked
as a fail (or DLQ)
Ensures that offending messages are sent to the back of a queue
There is a Sprint Definition meeting in
which the Product Owner will determine
the candidates for the upcoming sprint
The team will finalise their Sprint Backlog in
the Sprint Planning meeting
Sprints last two weeks, and include a daily
15 minute meeting to discuss progress
An end-of-sprint demo presents what we
have done to the Product Owner
The Sprint Retrospective allows the team to
review how the two weeks have been
“Old” Retry Mechanism
“New” Retry Service
Cognito strongly an Agile way of software
development, with software releases occurring
every two sprints. The process is as follows:
Technologies Used