@Override public void activeService(Service serv) { activeService(serv.getId()); }
@Override public void route(Message msg) { if (msg.getServiceId() == null) { throw new IllegalArgumentException(String.format("service id cannot be null: %s", msg.getClass().getName())); } if (msg instanceof NeedReplyMessage) { evaluateMessageTimeout((NeedReplyMessage) msg); } buildRequestMessageMetaData(msg); wire.send(msg); }
@Override public void deActiveService(Service serv) { deActiveService(serv.getId()); }
@Override public void send(final List<? extends NeedReplyMessage> msgs, final int parallelLevel, final CloudBusSteppingCallback callback) { DebugUtils.Assert(!msgs.isEmpty(), "you can not pass an empty message list to me"); for (NeedReplyMessage msg : msgs) { evaluateMessageTimeout(msg); } List<NeedReplyMessage> copy = new ArrayList<NeedReplyMessage>(); copy.addAll(msgs); int num = Math.min(parallelLevel, msgs.size()); List<? extends NeedReplyMessage> sub = copy.subList(0, num); List<NeedReplyMessage> init = new ArrayList<NeedReplyMessage>(); init.addAll(sub); sub.clear(); final Iterator<NeedReplyMessage> it = copy.iterator(); for (final NeedReplyMessage msg : init) { send(msg, new CloudBusCallBack(null) { @Override public void run(MessageReply reply) { try { steppingSend(it, callback); } finally { callback.run(msg, reply); } } }); } }
@Override public MessageReply call(final NeedReplyMessage msg) { evaluateMessageTimeout(msg); send(msg, false); return createTimeoutReply(msg);
eventProperty(event); buildResponseMessageMetaData(event); callReplyPreSendingExtensions(event, null);
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());
private void send(Message msg, Boolean noNeedReply) { if (msg.getServiceId() == null) { throw new IllegalArgumentException(String.format("service id cannot be null: %s", msg.getClass().getName())); } basicProperty(msg); msg.putHeaderEntry(CloudBus.HEADER_CORRELATION_ID, msg.getId()); msg.putHeaderEntry(CloudBus.HEADER_REPLY_TO, outboundQueue.getBindingKey()); if (msg instanceof APIMessage) { // API always need reply msg.putHeaderEntry(CloudBus.HEADER_NO_NEED_REPLY_MSG, Boolean.FALSE.toString()); } else if (msg instanceof NeedReplyMessage) { // for NeedReplyMessage sent without requiring receiver to reply, // mark it, then it will not be tracked and replied msg.putHeaderEntry(CloudBus.HEADER_NO_NEED_REPLY_MSG, noNeedReply.toString()); } buildRequestMessageMetaData(msg); wire.send(msg); }
@Override public void reply(Message request, MessageReply reply) { if (Boolean.valueOf(request.getHeaderEntry(CloudBus.HEADER_NO_NEED_REPLY_MSG))) { if (logger.isTraceEnabled()) { logger.trace(String.format("%s in message%s is set, drop reply%s", CloudBus.HEADER_NO_NEED_REPLY_MSG, wire.dumpMessage(request), wire.dumpMessage(reply))); } return; } AMQP.BasicProperties.Builder builder = new AMQP.BasicProperties.Builder(); reply.setAMQPProperties(builder.deliveryMode(1).build()); reply.getHeaders().put(CloudBus.HEADER_IS_MESSAGE_REPLY, Boolean.TRUE.toString()); reply.putHeaderEntry(CloudBus.HEADER_CORRELATION_ID, request.getId()); reply.setServiceId(request.getHeaderEntry(CloudBus.HEADER_REPLY_TO)); buildResponseMessageMetaData(reply); if (request instanceof NeedReplyMessage) { callReplyPreSendingExtensions(reply, (NeedReplyMessage) request); } wire.send(reply, false); }
@Override public boolean stop() { destroy(); return true; }
evaluateMessageTimeout(msg); send(msg, false); res.add(r); } else { res.add(createTimeoutReply(msg));
@Override public void send(final NeedReplyMessage msg, final CloudBusCallBack callback) { evaluateMessageTimeout(msg); send(msg, false);
DebugUtils.Assert(!msgs.isEmpty(), "you cannot pass an empty message list to me"); for (NeedReplyMessage msg : msgs) { evaluateMessageTimeout(msg); final int retNum = msgs.size(); for (NeedReplyMessage nmsg : init) { send(nmsg, new CloudBusCallBack(null) {
evaluateMessageTimeout(msg); minTimeout = minTimeout < msg.getTimeout() ? minTimeout : msg.getTimeout(); send(msg, false);