10.8.4. Limitations to the Real-Time Data Streaming in Anatella
The NaïveIPServer action and the MQTSubscribe action are streaming data in real-time within Anatella. At each new connection, Anatella generates a new data-row and “forwards” it through the data-transformation-graph: This is nice because it’s a very fast & light weight procedure. However, this way of working has some limitations: For example, this is working:
…but this equivalent graph is not working (because of the “Sort” Action):
Why is this second graph not working? This is because the “Sort” action does not process the data row-by-row: i.e. the “Sort” action must accumulate all the rows from the input table before emitting its first output row. This “accumulation” never terminates (because the “NaïveIPServer” Action never stops and always continues to create new rows at each new connection) and the whole process “gets stuck”.
Inside a real-time data streaming Anatella graph, only the Actions that are working row-by-row will work as expected: This is most of the commonly used Actions. To test if your graph works as expected, just add a few RowCounter Actions: At each new connection, you must see all the RowCounters that increase by one unit everywhere.
If you can’t create a real-time Anatella graph (e.g. because you need to use an Action that is not allowed in real-time data streaming mode), you can still always use the solution exposed in the previous section (i.e. in the section 10.8.3.): This alternative solution is slightly slower but it allows you to use all the Anatella Actions without any restriction.