CloudServices/Notifications/Specification: Difference between revisions

Line 105: Line 105:


[[Image:PN-HighLevelCommLines.png|thumb|250px|High-level overview of the lines of communication between the entities in the system.]]
[[Image:PN-HighLevelCommLines.png|thumb|250px|High-level overview of the lines of communication between the entities in the system.]]
[[Image:PN-HighLevelNotifFlow.png|thumb|250px|Overview of how notifications travel from web apps to clients.]]


* '''User''': Individual who receives notifications.
* '''User''': Individual who receives notifications.
* '''Client''': One of possibly many devices a user wishes to receive notifications on, e.g. a browser, mobile phone, feather duster, etc.
* '''Client''': One of possibly many devices a user wishes to receive notifications on, e.g. a browser, mobile phone, feather duster, etc.
* '''Web App''': Third-party web application that actually produces the notifications. The user subscribes to notifications from this app via a web page.
* '''Web App''': Third-party web application that actually produces the notifications. The user subscribes to notifications from this app via a web page.
* '''Message Broker''': Handles the sending and receiving of messages. See [http://www.rabbitmq.com RabbitMQ] for more information.
* '''Agent''': Responsible for all REST-API calls, this handles the creation of any messages within the message broker on behalf of web apps, and handles the creation of exchanges and queues on behalf of clients.
* '''Agent''': Responsible for all REST-API calls, this handles the creation of any messages within the message broker on behalf of web apps, and handles the creation of exchanges and queues on behalf of clients.
* '''Subscription''': Represents the relationship between a web app and a user who wishes to receive notifications from said web app. A subscription consists of the "link" that allows the web app to send notifications to the user.
* '''Routing Key''': A unique identifier generated by the Agent when a user subscribes to notifications from a web app. The routing key is used as a "mailbox address" by the web app to send notifications to the user.
* '''Routing Key''': A unique identifier generated by the Agent when a user subscribes to notifications from a web app. The routing key is used as a "mailbox address" by the web app to send notifications to the user.
* '''User Exchange''': Entity within the message broker where all messages destined for a particular user are sent.
* '''Client Queue''': Entity within the message broker where all messages destined for a particular client of a user are sent (note there is a 1:1 relationship between the number of clients and their respective queues, but a 1:n relationship between a user and all its clients).


== Server API ==
== Server API ==
169

edits