Multi-modules application architecture
===

I would like to design an application with a core and multiple modules on top of the core. The core would have the responsibility to receive messages from the network, to parse the incoming messages and to distribute the messages to registered modules.

There are multiple types of messages, some modules may be interested to receive only some of the types. The modules can execute in parallel, or they can execute sequentially (e.g. when modules are interdependent with a well defined order of execution).

Also, it would be great if the modules could be deployed/undeployed even if the core is up.

It is completely new for me, I used to write modular application but with the multiple parts wired statically.

Which direction (i.e. framework, pattern...) should I take for such a design? I don't know if it's relevant to my question but I precise I'll use Java.

Thanks