public void close() throws MessagingException { // TODO process everything channel.close(); closed.set(true); }
public void send(MessageExchange exchange) throws MessagingException { assert exchange != null; createTarget(context.getNmr(), exchange); exchange.setProperty(SEND_SYNC, null); ((MessageExchangeImpl) exchange).afterSend(); InternalExchange ie = (InternalExchange) ((MessageExchangeImpl) exchange).getInternalExchange(); getChannelToUse(ie).send(ie); }
org.apache.servicemix.nmr.api.Exchange xchng; if (isOneWay) { xchng = channel.createExchange(Pattern.InOnly); } else if (bop.getOutput() == null) { xchng = channel.createExchange(Pattern.RobustInOnly); } else { xchng = channel.createExchange(Pattern.InOut); Reference ref = channel.getNMR().getEndpointRegistry().lookup(refProps); xchng.setTarget(ref); xchng.setOperation(bop.getName());
public boolean sendSync(MessageExchange exchange) throws MessagingException { assert exchange != null; createTarget(context.getNmr(), exchange); exchange.setProperty(SEND_SYNC, Boolean.TRUE); ((MessageExchangeImpl) exchange).afterSend(); InternalExchange ie = (InternalExchange) ((MessageExchangeImpl) exchange).getInternalExchange(); return getChannelToUse(ie).sendSync(ie); }
protected Channel getChannelToUse(InternalExchange exchange) { Channel channelToUse = channel; if (exchange.getSource() == null) { // We need to look up the channel corresponding to the sender endpoint try { String sender = (String) exchange.getProperty(SENDER_ENDPOINT); if (sender != null) { int idx = sender.lastIndexOf(':'); String svc = sender.substring(0, idx); String ep = sender.substring(idx + 1); Map<String, Object> props = ServiceHelper.createMap(Endpoint.SERVICE_NAME, svc, Endpoint.ENDPOINT_NAME, ep); // TODO: we may be using the wrong channel if both an internal endpoint and an external endpoint // have been registered with the same svc / ep name List<Endpoint> eps = channel.getNMR().getEndpointRegistry().query(props); if (eps != null && eps.size() == 1) { channelToUse = ((InternalEndpoint) eps.get(0)).getChannel(); } } } catch (Throwable t) { // Ignore } } else { channelToUse = exchange.getSource().getChannel(); } return channelToUse; }
getChannel().send(exchange);
public boolean sendSync(MessageExchange exchange, long timeout) throws MessagingException { assert exchange != null; createTarget(context.getNmr(), exchange); exchange.setProperty(SEND_SYNC, Boolean.TRUE); ((MessageExchangeImpl) exchange).afterSend(); InternalExchange ie = (InternalExchange) ((MessageExchangeImpl) exchange).getInternalExchange(); return getChannelToUse(ie).sendSync(ie, timeout); }