Hi Steve,
generally, structural validation of a command should be done *before* it is sent to the command bus. JSR 303 (bean validation) is quite useful for this. It allows you to specify the rules once, and validate them both at the client (i.e. component putting the commands on the bus), and on the server. On the client, you can provide specific information in the UI. Once a command is sent to the server, it is rejected with an exception. In some cases, you could decide to silently discard the command.
Event Handlers must always listen to all events of a certain type. You will need to filter events based on its contents inside the handler itself.
Cheers,
Allard