@Override public void close(ErrorCondition condition) throws ActiveMQAMQPException { closed = true; sender.setCondition(condition); close(false); }
@Override public int sendMessage(MessageReference ref, Message message, ServerConsumer consumer, int deliveryCount) { ProtonServerSenderContext plugSender = (ProtonServerSenderContext) consumer.getProtocolContext(); try { return plugSender.deliverMessage(ref, consumer); } catch (Exception e) { connection.runNow(() -> { plugSender.getSender().setCondition(new ErrorCondition(AmqpError.INTERNAL_ERROR, e.getMessage())); connection.flush(); }); throw new IllegalStateException("Can't deliver message " + e, e); } }
@Override public void close(ErrorCondition condition) throws ActiveMQAMQPException { closed = true; if (condition != null) { sender.setCondition(condition); } protonSession.removeSender(sender); connection.runLater(() -> { sender.close(); try { sessionSPI.closeSender(brokerConsumer); } catch (Exception e) { log.warn(e.getMessage(), e); } sender.close(); connection.flush(); }); }
@Override public int sendMessage(MessageReference ref, Message message, ServerConsumer consumer, int deliveryCount) { ProtonServerSenderContext plugSender = (ProtonServerSenderContext) consumer.getProtocolContext(); try { return plugSender.deliverMessage(ref, deliveryCount, transportConnection); } catch (Exception e) { connection.lock(); try { plugSender.getSender().setCondition(new ErrorCondition(AmqpError.INTERNAL_ERROR, e.getMessage())); connection.flush(); } finally { connection.unlock(); } throw new IllegalStateException("Can't deliver message " + e, e); } }
@Override public void close(ErrorCondition condition) throws ActiveMQAMQPException { closed = true; if (condition != null) { sender.setCondition(condition); } protonSession.removeSender(sender); connection.lock(); try { sender.close(); } finally { connection.unlock(); } connection.flush(); try { sessionSPI.closeSender(brokerConsumer); } catch (Exception e) { log.warn(e.getMessage(), e); throw new ActiveMQAMQPInternalErrorException(e.getMessage()); } }
/** * @param consumer * @param queueName */ public void disconnect(Object consumer, String queueName) { ProtonServerSenderContext protonConsumer = senders.remove(consumer); if (protonConsumer != null) { try { protonConsumer.close(false); } catch (ActiveMQAMQPException e) { protonConsumer.getSender().setTarget(null); protonConsumer.getSender().setCondition(new ErrorCondition(e.getAmqpError(), e.getMessage())); } } }
/** * TODO: maybe it needs to go? * * @param consumer * @param queueName */ public void disconnect(Object consumer, String queueName) { AbstractProtonContextSender protonConsumer = senders.remove(consumer); if (protonConsumer != null) { try { protonConsumer.close(false); } catch (ActiveMQAMQPException e) { protonConsumer.getSender().setTarget(null); protonConsumer.getSender().setCondition(new ErrorCondition(e.getAmqpError(), e.getMessage())); } } }
/** * @param consumer * @param queueName */ public void disconnect(Object consumer, String queueName) { ProtonServerSenderContext protonConsumer = senders.remove(consumer); if (protonConsumer != null) { try { protonConsumer.close(false); } catch (ActiveMQAMQPException e) { protonConsumer.getSender().setTarget(null); protonConsumer.getSender().setCondition(new ErrorCondition(e.getAmqpError(), e.getMessage())); } } }
public void addSender(Sender sender) throws Exception { ProtonServerSenderContext protonSender = new ProtonServerSenderContext(connection, sender, this, sessionSPI); try { protonSender.initialise(); senders.put(sender, protonSender); serverSenders.put(protonSender.getBrokerConsumer(), protonSender); sender.setContext(protonSender); sender.open(); protonSender.start(); } catch (ActiveMQAMQPException e) { senders.remove(sender); sender.setSource(null); sender.setCondition(new ErrorCondition(e.getAmqpError(), e.getMessage())); sender.close(); } }
public void addSender(Sender sender) throws Exception { // TODO: Remove this check when we have support for global link names boolean outgoing = (sender.getContext() != null && sender.getContext().equals(true)); ProtonServerSenderContext protonSender = outgoing ? new ProtonClientSenderContext(connection, sender, this, sessionSPI) : new ProtonServerSenderContext(connection, sender, this, sessionSPI); try { protonSender.initialise(); senders.put(sender, protonSender); serverSenders.put(protonSender.getBrokerConsumer(), protonSender); sender.setContext(protonSender); connection.runNow(() -> { sender.open(); connection.flush(); }); protonSender.start(); } catch (ActiveMQAMQPException e) { senders.remove(sender); sender.setSource(null); sender.setCondition(new ErrorCondition(e.getAmqpError(), e.getMessage())); connection.runNow(() -> { sender.close(); connection.flush(); }); } }
public void addSender(Sender sender) throws Exception { // TODO: Remove this check when we have support for global link names boolean outgoing = (sender.getContext() != null && sender.getContext().equals(true)); ProtonServerSenderContext protonSender = outgoing ? new ProtonClientSenderContext(connection, sender, this, sessionSPI) : new ProtonServerSenderContext(connection, sender, this, sessionSPI); try { protonSender.initialise(); senders.put(sender, protonSender); serverSenders.put(protonSender.getBrokerConsumer(), protonSender); sender.setContext(protonSender); connection.lock(); try { sender.open(); } finally { connection.unlock(); } protonSender.start(); } catch (ActiveMQAMQPException e) { senders.remove(sender); sender.setSource(null); sender.setCondition(new ErrorCondition(e.getAmqpError(), e.getMessage())); connection.lock(); try { sender.close(); } finally { connection.unlock(); } } }
sender.setCondition(new ErrorCondition(AmqpError.NOT_FOUND, "Unknown subscription link: " + sender.getName())); sender.close();