You should consider using TargetCompID (tag 49) and/or other header tags (DeliverToCompID tag 128) to contrive the topic. Either the values of those tags are the topic, or you use them to look up the topic on which to publish (i.e. lookup in a routing table / in-memory map). This is the common approach for building a buyside/sellside hub.
Alternatively, you can use Symbol (tag 55), Account (tag 1), ExDest (tag 207) or any other tags in a similar manner. It all depends on the use case.
FIX over RV is pretty common - there are entire large-scale applications in production which use FIX to receive data and RV to route to other "outbound" FIX sessions. You're on the right track.