The FUSE Message Broker does support a non-blocking i/o through the use of nio - which is used instead on of the tcp:// protocol for a broker connection.
e.g. - whilst your clients may use tcp://somehost:61616 as the uri, configure the broker to listen on nio://localhost:61616.
Modern operating systems can handle a very large number of threads however, and we have scaled to 1000 clients and above using blocking i/o.
One of the simplest ways to increase the number of connections that the broker can handle is to figure out the optimal thread stack size for the broker on your JVM/OS combination. By default on Windows, stack sizes are very large. On most JVMs you configure this setting with the -Xss JVM option.
I would start with trying a -Xss512k stack size option on the broker. Load test you system and the broker did not report any stack problems try to go with an even lower setting. This will lower the amount of memory each created thread allocates.