We were having a debate on the best solution today with neither side coming to an agreement.
We have a product which ingests "messages". Every time we get a new message we need to send this data to 3 services for processing.
Service #1 requires the data to be in a special format. For this, we put the data in SQS which the service reads from.
Service #2 reads message fields: [a, b, c] and we send in a protobuf format.
Service #3 reads message fields: [a, b, c, d, e], also protobuf.
For service #2 and #3 we are sending the data into 2 separate SQS queues.
However, we could send the data in an SNS topic which queue #2 and #3 read off of. For this, we would send service #3's protobuf as it has all fields service #2 needs.
The person who wrote service #2 does not want to do this because he does not want to get extra data which they will just ignore.
The person who wrote service #3 thinks it's a waste of resources for the system to protobuf and send to 2 separate SQS queues instead of 1 SNS topic when service #2 could simply read protobuf #3 and just ignore the unwanted fields.
From an architecture standpoint who is correct?