Please dont apply if you dont have 4.0+ in java SE or EE Upwork tests,
Despite the long and meticulous explanation, this job is simple, to fetch info from a web service and store it on database.
I need you to write and expose a spring bean as its operations to be invoked with rest and as java remote callable object , the bean must implement a subscription service to allows to subscribe to social services by polling( periodical requests every x time ) and/or by invoking social rest subscribe method in the rest subscription endpoint if this exists for the given channel for the data of interest.
Regardless the data of interested is fetched by polling or by social channel rest subscription this must be persisted in a database, in the polling case the handler must only save the new ones. Since the data of interest can vary depending on social channel or the target, the progam must provide a factory to instanciate a SubscriptionProvider ( e.g SubscriptionProviderTwitter , SubscriptionProivderFacebook), SubscriptionType( hastag,likes,comments,posts ) and maybe a SubscriptionsRefreshType( rest,polling) .
The bean must be flexible enough to add in the future a JMS queue to allow remote systems to subscribe on new data of interest event. The spring bean will be stateless for now and will be also providing unsubscribe or update subscription(e.g the polling frequency) , and must use spring cloud ( @LoadBalanced ) or similar tool for balancing the requests to its operations in a set of servers in a round robin assignment. All the beans code and deliverables must be documented using javadoc including junit tests to check the load balance and the data fetching operations
This job is only for implementing the fetch and store loadbalanced bean, all the social authentication and data endpoints are already implemented and available as rest urls. The data of interest scope will be (hastag,likes,comments,posts) for the Facebook and Twitter channels
Here is a prototype of the suggested rest schema request and response , the prototype works with raml standard , i would prefer to apply the validate request/ response schema in your provided bean using raml if possible. https://www.dropbox.com/s/7ux30hunk3m3ult/InputOutput.png?dl=0