The order that modules appear in the list is important.
Modules have two types of methods. They are Event Listeners and Event Handlers. The Event listeners are defined in the IModuleOn* interfaces and the Event Handlers are defined in ModuleCore.
When an application is loaded, a list of module methods for all modules is complied as part of the startup process and depending on what type of method it is, depends on how it is called.
For Event Listeners, when an event (such as app start or client connect) occurs, the event handler for that event will be called in module order from the first module in the list to the last one. Each module has the chance to modify any value associated with the event but cannot prevent the event from occurring. As each one is called, any values modified by the previous module will be used. Once all of the module methods have been called, the method that called them will continue.
Event listeners generally start with on such as onAppStart or onConnect. The IModuleOn* interfaces are not actually needed and are only provided for reference to ensure you have the method signatures correct.
Generally, where module order is important with Event Listeners is when using security modules that may accept or reject a connection. If you have a module that accepts the connection and one that rejects it, the last one in the list is the one that will take precedence. Both will still be called but the last one will overwrite the value set by the previous one.
Other Event Listeners in Wowza work much the same way. They are generally added with class.add*Listener methods. If you have multiple modules that have the IMediaStreamActionNotify interface then their methods will be called in the order that the listener interfaces are added to the stream.
Event Handlers handle an actual event such as a play or publish event. They can modify the values but can also prevent the event from continuing. Generally, in modules, you will use event handlers that override one of the methods in ModuleCore. The ModuleCore methods are the actual handlers that ultimately handle the event but will only be called if the handler has not been previously overridden or has been called directly.
When Event Handlers are called, only the last module in the list that has the handler will be called. To have the same method called in other modules (including ModuleCore), you must either call it directly or use a special static method called invokePrevious. When invokePrevious is called, the same event handler method will be called in the next module up the list that has the method. If no other custom modules have the method then the ModuleCore method will be called. If you don’t call invokePrevious then the event will stop.
Other event handlers in Wowza are generally added with a class.set type method. When you call this for your own custom handlers then you will replace the default handler with your own so you must either handle all methods or extend the original handler class.
The logging warning you are getting is due to starting a mediaCaster stream but not specifying the mediaCaster type correctly. It is most likely you have started a liverepeater mediaCaster but have the mediaCaster type set to rtp.
Roger.