Getting started
In this section, the readers will get an overview of the Asynchronous Email Formatter being developed. The requirements, design, and implementation details will be discussed in brief.
Why Email Formatter is useful
Email formatting is required whenever we need to send emails to users based on an event such as User Registration, User Password Reset, and so on. This means that Email Formatter should be able to work independently of the main application, as email sending is a blocking task that may take a long time to execute. This is where the asynchronous nature of using a message queue comes in handy. In this chapter, however, we will be looking at a User Password Reset workflow that sends an auto-generated password on request by a user. But any other workflow, such as User Registration, can also be implemented with minor changes.
The use case diagram
The following use case diagram shows the requirement for Email Formatter:

The actor is the User of the Tweety. It has the following...