for certain apps.
Consider a workflow management system. Basic architecture communication style is blackboard - shared data store with each module looking at the datastore for things it can help with.
Database is great for this. Extra bonus - you get ACID semantics via the db's transaction mechanism on the cheap - thus avoiding the need for external transaction managers ala j2ee.
Communication is via polling task tables via regular intervals.
Works really well. It is not highly responsive (polling intervals introduce latency), but it is highly reliable and allows graceful degredation when some participating processes are down.