Advanced Systems Lab FAQ

This is a list of frequently asked questions about the project. If you have any other questions or comments send an e-mail to:



Added on 25th of September, 2015

Q: Do clients know in advance the name (or identifier) of queues that they will interact with?

A: Not necessarily. A client can first query which queues have messages for him/her, and then read/reatrieve a message from one of the queues.

Q:  How do clients know about each other? Do they have to find each other somehow?

A: This is up to your workload design! You can assume that the communicating clients will know the IDs of the clients they want to talk to and don't have to query the database to figure it out. But the database should identify and raise an error when the client ID used when specifying the sender or receiver in a message is not registered in the 'messaging system'. As with everything else, you should be able to explain your design decisions.

Q: How do the clients know about the middleware servers? 

A: When you start the clients program you can pass as part of the configuration file the IP address(es) of the middleware server(s). 

Q: Do messages in a queue have to be received in order (e.g. if the first message is for client A, and the second message is for client B, does B have to wait with receiving until A got his message)?

A: Short answer no, B does not have to wait. A client B can read/retrieve the topmost message which either has B as a receiver, or has no particular receiver (and hence can be read/retrieved by every client).


Added on 23rd of September, 2015

Q: "Should I use NIO or regular Sockets for the system?"

A: We accept solutions with either. Make sure you understand the implications relative to system behavior.


Added before 23rd of September, 2015

Q: What does "just by looking at its contents" exactly mean? 

A: "looking at its contents" refers to the contents of the message. Basically, you either 'pop' the queue (by removing the topmost message) or you 'peek' the topmost message.

Q: Should clients be able to query all available queues for messages from a particular sender using one single operation? Or is the operation always tight to a particular queue?

A: A suggestion is to have both options covered. Which one you will use can depend on the workload you define subsequently when designing your experiments.  

Q: When adding a message to a queue, the message must always have an explicit receiver or not? 

A: A message may or may not have an explicit receiver. You should be able to support both cases. 

Q: Assuming a queue has only messages for a particular client A and another client B wants to read the queue, should the queue appear to the client B then as empty and therefore the "empty queue" event be triggered?

A: If a client B wants to read from a queue that at that moment has only messages for client A, then the response should be that there are no available messages.