Hello,
I'm currently working on implementing a Web Integration Service for a particular domain where topics will be read but not written. The service will need to be dynamic in the sense that it cannot know about the particular topics or type definitions when running and instead make all published types available for consumption through the rest api. I'm having difficulty finding a straightforward way to do this with the web integration service as is. Is there a way to make this happen with the web integration service alone? If not, what would be a staightforward path to achieving this?
The RTI Web Integration Service either needs to be preconfigured with the topics and datatypes for which it needs to subscribe to via the XML configuration file, or you have to use the RESTful API to connect to the service to dynamically configure it with the information it needs to subscribe to a topic.
So, you would need an external application that knows about all of the Topics and datatypes and then can connect via RESTful to the Web Integration Service to send it datatype information and configure it to subscribe to data. There is no way for the Web Integration Service to do that automatically.
Theoretically, you could create an application that subscribes to all of the published Topics that it discovers, but since it's your own application, you would have to create a RESTful interface that other apps would connect to access the data that your application has received. So, you would not use the Web Integration Service in that case.
You may want to consider getting some help from RTI Professional Services since what you want to do is pretty advanced and will need to go into the bowels of DDS.
Thank you for clarifying that. On that note, would the Connector for Python offer some capability for this? I noticed that there is a DynamicData and DynamicType available within the library. Could there be a way to utilize it to subscribe to topics dynamically? It would be trivial to produce a web api if so with REST and/or Websocket support.
I don't think that RTI Connector for Python provides what you need to get access to the discovery information so that the application logic can find out what is being published.
HOWEVER, we do have an experimental Python binding to the Connext DDS API that does support access to the builtin Discovery Topics that you will want to monitor so that the application can know what's being published and then create the appropriate DataReader to receive the data and then use the dynamic data API to manipulate the data.
So, that seems like a viable way to do what you want...please see this:
https://www.rti.com/developers/rti-labs/python-api
Thanks Howard, I'm well down the path to figuring that out now. Thank you for letting me know about this API. I'm currently at the point I'm of getting ParticipantBulitinTopicInformation and attempting to sus out the topic names / handles from that.