Index: trunk/src/main/java/omq/client/proxy/Proxymq.java
===================================================================
--- trunk/src/main/java/omq/client/proxy/Proxymq.java	(revision 54)
+++ trunk/src/main/java/omq/client/proxy/Proxymq.java	(revision 55)
@@ -48,4 +48,5 @@
 	private static final long serialVersionUID = 1L;
 	private static final Logger logger = Logger.getLogger(Proxymq.class.getName());
+	private static final String multi = "multi#";
 	private static Map<String, Object> proxies = new Hashtable<String, Object>();
 
@@ -56,5 +57,4 @@
 	private transient EventDispatcher dispatcher;
 	private transient Serializer serializer;
-	// private transient Channel channel;
 	private transient Properties env;
 	private transient Map<String, byte[]> results;
@@ -111,6 +111,4 @@
 	@Override
 	public Object invoke(Object proxy, Method method, Object[] arguments) throws Throwable {
-		// long timeStart = (new Date()).getTime();
-
 		// Local methods only
 		String methodName = method.getName();
@@ -151,6 +149,14 @@
 
 		// Get the environment properties
-		String exchange = env.getProperty(ParameterQueue.RPC_EXCHANGE);
-		String routingkey = this.uid;
+		String exchange;
+		String routingkey;
+
+		if (request.isMulti()) {
+			exchange = multi + env.getProperty(ParameterQueue.RPC_EXCHANGE);
+			routingkey = "";
+		} else {
+			exchange = env.getProperty(ParameterQueue.RPC_EXCHANGE);
+			routingkey = uid;
+		}
 
 		// Add the correlation ID and create a replyTo property
@@ -159,6 +165,4 @@
 		// Publish the message
 		byte[] bytesRequest = serializer.serialize(serializerType, request);
-		// TODO See this
-		// channel.basicPublish(exchange, routingkey, props, bytesRequest);
 		broker.getChannel().basicPublish(exchange, routingkey, props, bytesRequest);
 	}
@@ -213,5 +217,5 @@
 				timeout = sync.timeout();
 			}
-			return Request.newSyncRequest(corrId, methodName, arguments, retries, timeout);
+			return Request.newSyncRequest(corrId, methodName, arguments, retries, timeout, multi);
 		} else {
 			return Request.newAsyncRequest(corrId, methodName, arguments, multi);
Index: trunk/src/main/java/omq/common/message/Request.java
===================================================================
--- trunk/src/main/java/omq/common/message/Request.java	(revision 54)
+++ trunk/src/main/java/omq/common/message/Request.java	(revision 55)
@@ -35,6 +35,10 @@
 	}
 
-	public Request(String id2, String method2, boolean b, Object[] params2, boolean multi2) {
-		// TODO Auto-generated constructor stub
+	private Request(String id, String method, boolean async, Object[] params, boolean multi) {
+		this.id = id;
+		this.method = method;
+		this.async = async;
+		this.params = params;
+		this.multi = multi;
 	}
 
@@ -43,6 +47,6 @@
 	}
 
-	public static Request newSyncRequest(String id, String method, Object[] params, int retries, long timeout) {
-		Request req = new Request(id, method, false, params);
+	public static Request newSyncRequest(String id, String method, Object[] params, int retries, long timeout, boolean multi) {
+		Request req = new Request(id, method, false, params, multi);
 		req.setRetries(retries);
 		req.setTimeout(timeout);
Index: trunk/src/main/java/omq/server/RemoteObject.java
===================================================================
--- trunk/src/main/java/omq/server/RemoteObject.java	(revision 54)
+++ trunk/src/main/java/omq/server/RemoteObject.java	(revision 55)
@@ -223,4 +223,8 @@
 		String queue = UID;
 		String routingKey = UID;
+		// Multi info
+		String multiExchange = multi + exchange;
+		String multiQueue = UID + System.currentTimeMillis();
+
 		boolean durable = Boolean.parseBoolean(env.getProperty(ParameterQueue.DURABLE_QUEUES, "false"));
 
@@ -231,8 +235,10 @@
 		logger.info("RemoteObject: " + UID + " declaring direct exchange: " + exchange + ", Queue: " + queue);
 		channel.exchangeDeclare(exchange, "direct");
-		channel.exchangeDeclare(multi + exchange, "fanout");
 		channel.queueDeclare(queue, durable, false, false, null);
 		channel.queueBind(queue, exchange, routingKey);
-		channel.queueBind(queue, multi + exchange, routingKey);
+
+		channel.exchangeDeclare(multiExchange, "fanout");
+		channel.queueDeclare(multiQueue, durable, false, false, null);
+		channel.queueBind(multiQueue, multiExchange, "");
 
 		// Declare the event topic fanout
@@ -243,4 +249,5 @@
 		consumer = new QueueingConsumer(channel);
 		channel.basicConsume(queue, true, consumer);
+		channel.basicConsume(multiQueue, true, consumer);
 	}
 
