Design a sender and receiver system like Kafka where there can be multiple senders and receivers subscribed to Topics. Each event generated at sender should be received by all receivers subscribed to that topic. Also, design group mechanism at receiver side where an event is received by one of the receivers in a group and received by all groups subscribed to that Topic.
Note: While answering design pattern questions, it is expected from you to provide the Data Structure that would be best suited, different classes & relationships between them, etc. You need not provide the whole code in your answer (unless explicitly told to do so).