What I'm doing is based on queues, not publish/subscribe. The quotes around point to point comes in where I can have multiple clients putting messages in a queue, and multiple servers getting messages off the queue to service.
The clients will attach unique ID's to their request and put it in the request queue. Multiple servers listen on the request queue for the next available message; this does automatic load balancing, the faster servers process more requests. The servers put the respones in the response queue, using the unique ID that was with the message. Clients listen on the response queue for their message keyed off of the unique ID.
This gives us the Master/worker behavior we wanted, without the JavaSpaces setup hassle. And it is a hassle, escpecially on standalone laptops that aren't connected to the Internet sometimes.