This is one of the projects of RSSFeedsProject which enables clients to register for receiving latest feeds for various groups of urls at a preconfigured interval.
Each channel is associated to a specific topic (Ex: News/Sports etc.,) containing a specific set of urls.
Clients connect to a websocket endpoint "/getfeeds" and latest feeds are published to each of the users endpoints depending upon the channels which a user has configured.
This is the subscriber(client) part of RSS FeedAggregator:
-
A client registers at first with the application.
-
Once registered, a client can create many channels.
-
Each channel will be attributed to a specific topic (Ex: News/ Sports/Travel etc.,) with a set of urls for which latest feeds need to be fetched.
-
Once channels are defined, a user can create a websocket endpoint one for each of the channelId.
-
The application is supposed to scheduling jobs inorder to fetch latest feeds for the urls associated with the channelId at a preconfigured interval.
-
Create user /rssfeeds/subscriber
-
Create channels for each user /rssfeeds/channel
-
Subscribe to websocketendpoint /getfeeds
Work In Progress:
- Sending notifications to the client websocket endpoints once latest feeds are retrieved.
TODO:
-
Using caching to optimize fetches.
-
Configure separate job interval schedule for each of the feed url by retrieving the max time (from GET headers) before another GET can be sent again.
-
Java
-
SpringBoot/Amazon Simple Queue Service (SQS)/DynamoDB
-
Web sockets