Changeset 107 for branches/supervisor/src/main
- Timestamp:
- 10/19/13 13:20:44 (11 years ago)
- Location:
- branches/supervisor/src/main/java/omq
- Files:
-
- 1 added
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/supervisor/src/main/java/omq/Remote.java
r105 r107 22 22 */ 23 23 public String getRef(); 24 25 public String getUID(); 26 27 public void setUID(String uID); 24 28 } -
branches/supervisor/src/main/java/omq/client/proxy/Proxymq.java
r105 r107 47 47 48 48 private String reference; 49 private String UID; 49 50 private transient String exchange; 50 51 private transient String multiExchange; … … 72 73 * Proxymq Constructor. 73 74 * 74 * This constructor uses an reference to know which object will call. It also uses75 * Properties to set where to send the messages75 * This constructor uses an reference to know which object will call. It 76 * also uses Properties to set where to send the messages 76 77 * 77 78 * @param reference 78 * The reference represents the unique identifier of a remote object 79 * The reference represents the unique identifier of a remote 80 * object 79 81 * @param clazz 80 82 * It represents the real class of the remote object. With this … … 119 121 return getRef(); 120 122 } 123 if (methodName.equals("getUID")) { 124 return getUID(); 125 } 126 if (methodName.equals("setUID")) { 127 setUID((String) arguments[0]); 128 return null; 129 } 121 130 if (methodName.equals("equals")) { 122 131 if (arguments[0] instanceof Remote) { … … 168 177 } 169 178 179 // TODO look this carefully 180 String appId = UID == null ? reference : UID; 181 170 182 // Add the correlation ID and create a replyTo property 171 BasicProperties props = new BasicProperties.Builder().appId( reference).correlationId(corrId).replyTo(replyQueueName).type(serializerType)172 . deliveryMode(deliveryMode).build();183 BasicProperties props = new BasicProperties.Builder().appId(appId).correlationId(corrId).replyTo(replyQueueName) 184 .type(serializerType).deliveryMode(deliveryMode).build(); 173 185 174 186 // Publish the message 175 187 byte[] bytesRequest = serializer.serialize(serializerType, request); 176 188 broker.publishMessge(exchange, routingkey, props, bytesRequest); 177 logger.debug("Proxymq: " + reference + " invokes '" + request.getMethod() + "' , corrID: " + corrId + ", exchange: " + exchange + ", replyQueue: "178 + replyQueueName + ", serializerType: " + serializerType + ", multi call: " + request.isMulti() + ", async call: " + request.isAsync()179 + ", delivery mode: " + deliveryMode);189 logger.debug("Proxymq: " + reference + " invokes '" + request.getMethod() + "' , corrID: " + corrId + ", exchange: " + exchange 190 + ", replyQueue: " + replyQueueName + ", serializerType: " + serializerType + ", multi call: " + request.isMulti() 191 + ", async call: " + request.isAsync() + ", delivery mode: " + deliveryMode); 180 192 } 181 193 … … 362 374 } 363 375 376 @Override 377 public String getUID() { 378 return UID; 379 } 380 381 @Override 382 public void setUID(String uID) { 383 this.UID = uID; 384 } 385 364 386 } -
branches/supervisor/src/main/java/omq/common/broker/RemoteBroker.java
r103 r107 6 6 7 7 import omq.Remote; 8 import omq.client.annotation.SyncMethod;9 8 import omq.exception.RemoteException; 10 9 import omq.exception.RetryException; … … 19 18 public void deleteObject(String reference) throws RemoteException, IOException; 20 19 21 @SyncMethod(retry = 1, timeout = 1000)22 20 public boolean hasObject(String reference) throws RetryException; 23 21 24 @SyncMethod(retry = 1, timeout = 1000)25 22 public HasObject hasObjectInfo(String reference) throws RetryException; 26 23 -
branches/supervisor/src/main/java/omq/common/broker/RemoteBrokerImpl.java
r103 r107 50 50 @Override 51 51 public HasObject hasObjectInfo(String reference) throws RetryException { 52 System.out.println("Hola soc un broker"+ getRef() + ", "+getUID()+ ", fil: "+Thread.currentThread().getId()); 52 53 if (getBroker().getRemoteObjs().containsKey(reference)) { 53 54 RemoteObject r = getBroker().getRemoteObjs().get(reference); 54 55 int numThreads = r.getPool().getWorkers().size(); 55 return new HasObject(this.get Ref(), reference, true, numThreads);56 return new HasObject(this.getUID(), reference, true, numThreads); 56 57 } 57 return new HasObject(this.get Ref(), reference, false, 0);58 return new HasObject(this.getUID(), reference, false, 0); 58 59 } 59 60 -
branches/supervisor/src/main/java/omq/common/broker/RemoteMultiBroker.java
r106 r107 1 1 package omq.common.broker; 2 3 import java.util.Set;4 2 5 3 import omq.Remote; … … 9 7 10 8 public interface RemoteMultiBroker extends Remote { 11 @MultiMethod12 @SyncMethod(retry = 1, timeout = 1000)13 public Set<String> getRemoteObjects();14 9 15 10 @MultiMethod -
branches/supervisor/src/main/java/omq/server/InvocationThread.java
r106 r107 172 172 channel = broker.getNewChannel(); 173 173 174 /*175 * Default queue, Round Robin behaviour176 */177 178 174 // Get info about which exchange and queue will use 179 175 String exchange = env.getProperty(ParameterQueue.RPC_EXCHANGE, ""); … … 242 238 */ 243 239 240 // Disable Round Robin behavior 244 241 boolean autoAck = false; 245 242 -
branches/supervisor/src/main/java/omq/supervisor/SupervisorImpl.java
r106 r107 1 1 package omq.supervisor; 2 2 3 import java. util.ArrayList;3 import java.lang.reflect.Proxy; 4 4 import java.util.HashMap; 5 import java.util.List;6 5 import java.util.Map; 7 6 import java.util.Set; 8 7 8 import omq.client.proxy.Proxymq; 9 9 import omq.common.broker.HasObject; 10 10 import omq.common.broker.RemoteBroker; … … 15 15 import org.apache.log4j.Logger; 16 16 17 import com.rabbitmq.client.AMQP.Queue.DeclareOk; 17 18 import com.rabbitmq.client.Channel; 18 import com.rabbitmq.client.AMQP.Queue.DeclareOk;19 19 20 20 public class SupervisorImpl extends RemoteObject implements Supervisor, Runnable { … … 29 29 private long sleep; 30 30 private Map<String, OmqSettings> objectSettings; 31 // TODO: Set<?>32 31 private RemoteMultiBroker multiBroker; 33 32 private Map<String, RemoteBroker> brokerMap; 34 private List<RemoteBroker> brokers;35 33 36 34 public SupervisorImpl(String brokerSet, long sleep) { 37 35 this.brokerSet = brokerSet; 38 36 this.sleep = sleep; 39 broker s = new ArrayList<RemoteBroker>();37 brokerMap = new HashMap<String, RemoteBroker>(); 40 38 objectSettings = new HashMap<String, OmqSettings>(); 41 39 } … … 72 70 if (brokerSet.equals(brokerSet) && !brokerMap.containsKey(brokerName)) { 73 71 logger.info("Broker " + brokerName + " subscrived"); 74 RemoteBroker broker = getBroker().lookup(brokerName, RemoteBroker.class); 72 // RemoteBroker broker = getBroker().lookup(brokerSet, 73 // RemoteBroker.class); 74 Proxymq proxy = new Proxymq(brokerSet, RemoteBroker.class, getBroker()); 75 Class<?>[] array = { RemoteBroker.class }; 76 RemoteBroker broker = (RemoteBroker) Proxy.newProxyInstance(RemoteBroker.class.getClassLoader(), array, proxy); 77 broker.setUID(brokerName); 75 78 brokerMap.put(brokerSet, broker); 76 79 } else { … … 86 89 throw new Exception("JAJAJAJAJA"); 87 90 } 91 92 HasObject[] hasList = multiBroker.hasObjectInfo(reference); 93 94 int minObjects = settings.getMinNumberObjects(); 95 int numBrokers = hasList.length; 96 int numObjects = 0; 97 98 for (HasObject h : hasList) { 99 if (h.hasObject()) { 100 numObjects++; 101 } 102 } 103 System.out.println("NumObjects " + numObjects + " numBrokers " + numBrokers); 104 105 int i = 0; 106 while (numObjects <= minObjects && i < numBrokers) { 107 HasObject h = hasList[i++]; 108 if (h.hasObject()) { 109 brokerMap.get(h.getBrokerName()).spawnObject(reference, settings.getClassName()); 110 numObjects++; 111 } 112 } 88 113 objectSettings.put(reference, settings); 114 89 115 } 90 116 … … 114 140 @Override 115 141 public void unbindObject(OmqSettings settings, HasObject[] hasList, int numObjects) throws Exception { 116 String reference = settings.getReference();117 118 int minObjects = settings.getMinNumberObjects();119 120 for (RemoteBroker broker : brokers) {121 122 123 124 125 }142 // String reference = settings.getReference(); 143 // 144 // int minObjects = settings.getMinNumberObjects(); 145 // 146 // for (RemoteBroker broker : brokers) { 147 // if (broker.hasObject(reference) && (numObjects - 1) >= minObjects) { 148 // broker.deleteObject(reference); 149 // break; 150 // } 151 // } 126 152 127 153 } … … 166 192 } 167 193 168 public List<RemoteBroker> getBrokers() {169 return brokers;170 }171 172 public void setBrokers(List<RemoteBroker> brokers) {173 this.brokers = brokers;174 }175 176 194 public String getBrokerSet() { 177 195 return brokerSet;
Note: See TracChangeset
for help on using the changeset viewer.