channelPool = new ChannelPool(CloudBusGlobalProperty.CHANNEL_POOL_SIZE, conn); createExchanges(); outboundQueue = new BusQueue(makeMessageQueueName(SERVICE_ID), BusExchange.P2P); Channel chan = channelPool.acquire(); chan.queueDeclare(outboundQueue.getName(), false, false, true, queueArguments()); chan.basicConsume(outboundQueue.getName(), true, consumer); chan.queueBind(outboundQueue.getName(), outboundQueue.getBusExchange().toString(), outboundQueue.getBindingKey()); channelPool.returnChannel(chan); maid.construct(); noRouteEndPoint.construct();
Channel chan = channelPool.acquire(); try { chan.queueDeclare(name, false, false, true, null); chan.queueBind(name, BusExchange.BROADCAST.toString(), "#"); } finally { channelPool.returnChannel(chan);
public void send(final Message msg, boolean makeQueueName) { /* StopWatch watch = new StopWatch(); watch.start(); */ String serviceId = msg.getServiceId(); if (makeQueueName) { serviceId = makeMessageQueueName(serviceId); } buildSchema(msg); evalThreadContextToMessage(msg); if (logger.isTraceEnabled() && logMessage(msg)) { logger.trace(String.format("[msg send]: %s", wire.dumpMessage(msg))); } Channel chan = channelPool.acquire(); try { new RecoverableSend(chan, msg, serviceId, outboundQueue.getBusExchange()).send(); /* watch.stop(); logger.debug(String.mediaType("sending %s cost %sms", msg.getClass().getName(), watch.getTime())); */ } catch (IOException e) { throw new CloudRuntimeException(e); } finally { channelPool.returnChannel(chan); } }
void trackService(String servId) { if (trackerClose) { return; } String[] pairs = servId.split("\\."); if (pairs.length < 2) { // don't track services not using management node id in service id return; } pairs[pairs.length-1] = "*"; String bindingKey = makeMessageQueueName(StringUtils.join(pairs, ".")); bindingKeys.add(bindingKey); if (logger.isTraceEnabled()) { logger.trace(String.format("message tracker binds to key[%s], tracking service[%s]", bindingKey, pairs[0])); } try { Channel chan = channelPool.acquire(); try { chan.queueBind(name, BusExchange.P2P.toString(), bindingKey); } finally { channelPool.returnChannel(chan); } } catch (IOException e) { throw new CloudRuntimeException(e); } }
public void publish(Event evt) { /* StopWatch watch = new StopWatch(); watch.start(); */ buildSchema(evt); evalThreadContextToMessage(evt); if (logger.isTraceEnabled() && logMessage(evt)) { logger.trace(String.format("[event publish]: %s", wire.dumpMessage(evt))); } Channel chan = channelPool.acquire(); try { new RecoverableSend(chan, evt, evt.getType().toString(), BusExchange.BROADCAST).send(); /* watch.stop(); logger.debug(String.mediaType("sending %s cost %sms", evt.getClass().getName(), watch.getTime())); */ } catch (IOException e) { throw new CloudRuntimeException(e); } finally { channelPool.returnChannel(chan); } }
@Override public void run() throws Throwable { Channel chan = channelPool.acquire(); try { chan.queueUnbind(name, BusExchange.P2P.toString(), servId); } finally { channelPool.returnChannel(chan); } } });
private void createExchanges() throws IOException { Channel chan = channelPool.acquire(); try { chan.exchangeDeclare(BusExchange.NO_ROUTE.toString(), BusExchange.NO_ROUTE.getType()); Map<String, Object> args = map(e("alternate-exchange", (Object) BusExchange.NO_ROUTE.toString())); chan.exchangeDeclare(BusExchange.P2P.toString(), BusExchange.P2P.getType(), true, false, args); chan.exchangeDeclare(BusExchange.BROADCAST.toString(), BusExchange.BROADCAST.getType()); } finally { channelPool.returnChannel(chan); } }
@Override public void run() throws Throwable { Channel chan = channelPool.acquire(); try { chan.queueUnbind(name, BusExchange.BROADCAST.toString(), "#"); } finally { channelPool.returnChannel(chan); } } });