My team needneeds to design an API which sends objects to a queue in the cloud and retrieveretrieves objects from it. The data is inserted tointo the queue inas byte[]
.
We have 2 ideas until now which I would love to hear your notsnotes/ideas about them:
First version:
public void push(String object)
public String retrieve()
Notes: To support this API, any consumer must implement a logic to convert his objects to String
s and visevice versa.
Advantages:
- Easy to implement.
- Easy to maintain.
Disadvantages:
- The consumer of our API must design a solution which is not related to his logic for converting his objects to Strings
String
s. - The consumer of our API must call a method which convertconverts his objects by him selfhimself even thoughtthough it is not related to his logic.
Second version:
public void <T> push(T object)
public T <T> retrieve(Class<T> type)
Advantages:
- Easy to implement. (In Java, we can use
ObjectMapper
) - Easy to use this API.
- The consumer of our API does not need to manually convert menually his objects to anything else.
Disadvantages:
- The types of the consumer of our API must support
Json
converts - Recursivlyrecursively, Aa class with obejctsobject properties, all propertiesproperty types must supportJson
converts. - If the consumer does not read cerfully the documentation If the consumer does not read the documentation carefully, something won't work or there will be a silientsilent bug.
General notes:
- The API needneeds to be supported for at listleast 4 years.