Can the Routing Service be configured with multiple domain routes and where the output of one domain route is used as input
in another domain route ? If this is possible (and advisable), what must be considered in the configuration ?
Thanks
Nico.
Can the Routing Service be configured with multiple domain routes and where the output of one domain route is used as input
in another domain route ? If this is possible (and advisable), what must be considered in the configuration ?
Thanks
Nico.
Hi,
Note: This posting contains incorrect information. See the postings that follow for the corrected information.
Yes, as far as I know there are no limitations that would prevent using the output of a route as the input of another route. Routing service routes really do not know any of this. They just process the data that arrives on their inputs so if this was the output of another route it would not mater.
This is actually not an uncommon use-case. It can be used when you need to trasnsform data in multiple stages.
On thing to be careful about is if you were to establish a feedback loop between inputs and outputs: Say Route1 takes input A into output B, Route2 takes Input B into output C. So far so good. But if now Route 3 ware to take input C into output A you would end up in a feedback loop where the routing service would be executing the routes in sequence as fast as it can burning all the available CPU...
Gerardo
Hi Gerado,
Ok, thanks for that confirmation. There must then be something wrong in my configuration. In my case Route 1 takes input A to output B and Route 2 takes B to C. C in this
case is a TCP route. When the routes run on two separate Routing Service instances, it works fine, but when the two routes are combined into one Routing Service instance, it does
not seem to work.
One symptom is that readers for Route 2 can not be observed in Analyser.
Is there any special condsiderations necessary, or a need of, the <creation_mode> tag ?
Regards
Nico.
Hi Nico,
I mis-spoke. The feature you describe is only supported in the next version ot Routing Service we are currently developing. I have been working with it internally for a while now and I forgot this was not possible in the existing Routing Service...
In the version of Routing Service shipped with Connext DDS 5.0.0 the outputs of routes will not match with the inputs of routes. This is automatically prevented by the Routing Service logic to avoid the risk of "loops" that I mentioned before. I asked some of the developers and it appears that there is no workaround so I am afraid you need to use to separate Routing Service instances...
Sorry for misleading you before.
Gerardo
Hi Gerardo,
I still do not understand fully the difference functionality between the versions. Is it correct to state that in versions before 5.0.0 (We are still using 4.5f), it is possible to
match the output of one route to the input of another.
With 5.0.0 this is explicitly non-functional ?
Regards
Nico.
Hi,
No this has never been supported in any of the released versions of RTI Routing Server. The limitation is in the Routing Service engine itself, not in the version of the core libraries used. Regular DDS DomainParticipants can create DataWriters and DataReaders on the same Topic and they will communicate over DDS even if the reader and writer are in the same DomainParticipant in the same process.
What caused my confusion is that we have been working on a new version for a while and we already have some internal releases available which I have been using. This newer version does not have the limitation you encountered but it is still not available to be released.
Gerardo