Second Programming Assignment

Due: End of Semester

In this project you will develop a distributed news distribution service.

To do this, you will need to study the AKKA distributed chat service tutorial. See also basic examples here.

Your program will implement a news feed distribution service that works as a hub for posting and reading news. The service consists of a central server and two types of clients: consumers and producers.

The central server provides a selection of news topics to which consumer clients can subscribe. The producers can send news for a specific topic to the central server, which then distributes the news to the consumers that are subscribed for the corresponding topic. Producers also have to register with the central server before they can send their news. In particular, they have to inform the server for which topics they provide news. Design a protocol for the communication between the central server and the clients.

Implement your service using Scala actors. In particular, there should be a separate actor per journalist (producer), an actor per consumer, and an actor for the central server.

You can build your solution as a stand-alone application that deploys these actors. You can also follow the design of a distributed system as described in the AKKA tutorial.

You should submit the code for your project, along with a README file describing the compiling process and the way to run your news application.

You can use sbt if you want to build and run the project (instructions on installation and use).