I'm using a spring publish subscribe setup whereby events are published to a single channel.
The different events are quite different from each other and deriving the behaviour of the listener from the type would be messy.
I have enough types however that I'm not comfortable with the explosion of a number of different message channels to handle the different types so I'd like to prevent this if possible.
take a look at Spring Integration patterns. You can do the pub/sub/channel pattern using just declarative logic.
http://static.springsource.org/spring-integration/reference/html/overview.html