An idea about message queue Design
We can divide the messages sent by DPM to ACA into two categories: unicast messages (such as port configuration information) and broadcast messages (such as neighbor table information). Grouping all host into a certain number, and creating a topic (group topic) for each group. DPM maintains the mapping between host and group topic. When DPM sends a unicast message, DPM sends the message directly to group topic, or sends it to unicast topic, unicast topic is a proxy topic, and then forwards the message to group topic. When DPM sends a broadcast message, DPM sends the message to multiple broadcast topic,broadcast topic in a load-balanced manner and then broadcasts it to the responsible group topic. There are two ways: One is that DPM stores the mapping relationship between broadcast topic and group topic, and constructs different messages for each group topic, and the other is that DPM sends messages in the same format to all broadcast topic, broadcast topic only sends messages to its associated group topic after receiving the message from DPM.

[LX] Why is unicast topic forwarded to a group topic, to reduce the number of topics? Is the unicast topic eventually received by every node of the forwarded group topic?
In this case, DPM does not need to maintain the mapping relationship between host and goup topic, unicast topic does this.
[LX] How does MQ know about the mapping between broadcast topic and the associated group topics? Trying to understand how load-balancing works here.
Group topics can be grouped, each group belongs to one broadcast topic, or all group topics belongs to all broadcast topic ( load balancing can be used), or both are supported, and can be configured.
[LX] For second option, MQ stores the mapping between between broadcast topic and the associated group topics? yes.
@xieus I answered your questions by directly editing your comment above.
Hey @chenpiaoping Could you please update me on the item? How is the development going on both DPM and ACA?