I am trying to come up with a design of document exchange system. System should be for business-to-business communication. Description: There will be possibly 100+ clients(consumers) - they will have to develop clients independently. Clients should send and receive documents.
Message Data:
- Author client ID
- Recipient client ID
- Document data (title, body, etc)
- Attachments
client IDs known for everyone
Whole document/message might become 200MB+ or even GBs (depending on how many attachments are presented).
There should be other similar operations to sending and receiving documents, that should follow the same principle, so I'm not listing them for brevity.
What methods I discussed:
- REST/SOAP - but there is no way to push messages to clients, when someone sent to them (one way is that client could have scheduler to regularly check if they have some documents to receive, which I don't like because messaging won't be instant).
- AMQP - even though solves the first problem, it has some limitations, like when some client sends me a document I cannot respond to them. For example: validation errors and etc.
- REST/SOAP for only sending and AMQP for only receiving messages. This just complicates everything.
Looking for suggestions, that could make my life easier, spend hours and hours but nothing good comes up to my mind.
Note: Messages might be 200MB+ in size and possibly represented as XML or JSON
Example flow:
client->sendDocumentRequest->server->sendDocumentResponse->client
server->pushDocument->some other client
I hope I explained well, if needed any more information for clarification, please ask. Thank you.
but this complicates everything (especially for clients)
who said it was going to be easy? 2 concerns 2 solutions. Divide an conquer – Laiv Mar 12 '19 at 14:39