Project 3 – Distributed Messaging

 

Objectives

Gain experience using point-to-point and publish/subscribe distributed messaging.

Functional Requirements

For this project you will create another version of the chat system.  The user-visible behavior of the system will be identical to that of the previous project, but the implementation will change as described in the next section.

Implementation Requirements

Currently, your chat system uses remote method invocation for all communication between client and server.  For this project, modify your system to use distributed messaging instead of remote method invocation for the following client/server communications:

 

1)      Use point-to-point messaging to send new discussion comments from clients to the server

 

2)      Use publish/subscribe messaging to notify clients of new discussion comments

 

3)      Use publish/subscribe messaging to notify clients of changes to the discussion list

 

All other communications between client and server may continue to use remote method invocation, although you are certainly free to make further use of messaging beyond that described above.

 

Your system must ensure that anyone sending new comments to a discussion is currently logged in to the server.  Users or programs that are not currently logged in should not be allowed to add comments.  This means that clients will need to include a valid session ID in messages sent to the server, and the server will need to validate client-provided session IDs to ensure that the client is currently logged in.

Project Submission

Create a gzip-compressed tar file containing all of your project's source files and directories. The name of the file must have the following format:

 

firstname_lastname.tgz
 

where firstname should be replaced with your first name and lastname should be replaced with your last name. For example, if your name is Bob White, you would use the following command to create your compressed tar file:

 

$ tar czf Bob_White.tgz project-dir

 

(this assumes that your project files are stored in a subdirectory named project-dir).

After you have created your tar file, click on the following link to go to the project submission web page:

Project 3 Submission Page

After you provide your CS account login name and password and the name of your tar file, this page will upload your tar file to our server.

After submitting your tar file, in order to receive credit you must also pass off your project with a TA. When you pass off, you will be asked to download your tar file from our server to ensure that you are passing off the same code that you turned in.  The project retrieval page is located at the following link:

Project 3 Retrieval Page