public Rejected newInstance(Object described) { List l = (List) described; Rejected o = new Rejected(); switch(1 - l.size()) { case 0: o.setError( (ErrorCondition) l.get( 0 ) ); } return o; }
public Rejected newInstance(Object described) { List l = (List) described; Rejected o = new Rejected(); switch(1 - l.size()) { case 0: o.setError( (ErrorCondition) l.get( 0 ) ); } return o; }
public Rejected newInstance(Object described) { List l = (List) described; Rejected o = new Rejected(); switch(1 - l.size()) { case 0: o.setError( (ErrorCondition) l.get( 0 ) ); } return o; }
public Rejected newInstance(Object described) { List l = (List) described; Rejected o = new Rejected(); switch(1 - l.size()) { case 0: o.setError( (ErrorCondition) l.get( 0 ) ); } return o; }
/** * Reject the given delivery by applying Rejected disposition state, and optionally settling. * * @param delivery * the delivery to update * @param settle * whether to settle * @return the delivery */ public static ProtonDelivery rejected(ProtonDelivery delivery, boolean settle) { delivery.disposition(new Rejected(), settle); return delivery; }
/** * Rejects and settles an AMQP 1.0 message. * * @param delivery The message's delivery handle. * @param error The error condition to set as the reason for rejecting the message (may be {@code null}. * @throws NullPointerException if delivery is {@code null}. */ public static void rejected(final ProtonDelivery delivery, final ErrorCondition error) { Objects.requireNonNull(delivery); final Rejected rejected = new Rejected(); rejected.setError(error); // doesn't matter if null delivery.disposition(rejected, true); }
/** * Rejects and settles an AMQP 1.0 message. * * @param delivery The message's delivery handle. * @param error The error condition to set as the reason for rejecting the message (may be {@code null}. * @throws NullPointerException if delivery is {@code null}. */ public static void rejected(final ProtonDelivery delivery, final ErrorCondition error) { Objects.requireNonNull(delivery); final Rejected rejected = new Rejected(); rejected.setError(error); // doesn't matter if null delivery.disposition(rejected, true); }
/** * Send a "rejected" delivery to the AMQP remote sender * * @param linkName AMQP link name * @param delivery AMQP delivery * @param cause exception related to the rejection cause */ private void rejectedDelivery(String linkName, ProtonDelivery delivery, Throwable cause) { Rejected rejected = new Rejected(); rejected.setError(new ErrorCondition(Symbol.valueOf(AmqpBridge.AMQP_ERROR_SEND_TO_KAFKA), cause.getMessage())); delivery.disposition(rejected, true); log.debug("Delivery sent [rejected] on link {}", linkName); }
/** * Settles the command message with the <em>rejected</em> outcome * and flows credit to the peer. * <p> * This method also finishes the OpenTracing span returned by * {@link #getCurrentSpan()}. * * @param errorCondition The error condition to send in the disposition frame (may be {@code null}). * @param credit The number of credits to flow to the peer. * @throws IllegalArgumentException if credit is negative. */ public void reject(final ErrorCondition errorCondition, final int credit) { final Rejected rejected = new Rejected(); final Map<String, Object> items = new HashMap<>(2); items.put(Fields.EVENT, "rejected command for device"); if (errorCondition != null) { rejected.setError(errorCondition); Optional.ofNullable(errorCondition.getDescription()).ifPresent(s -> items.put(Fields.MESSAGE, s)); } TracingHelper.logError(currentSpan, items); delivery.disposition(rejected, true); if (credit > 0) { flow(credit); } currentSpan.finish(); }
private Rejected createRejected(Symbol amqpError, String message) { Rejected rejected = new Rejected(); ErrorCondition condition = new ErrorCondition(); condition.setCondition(amqpError); condition.setDescription(message); rejected.setError(condition); return rejected; }
private Rejected createRejected(Symbol amqpError, String message) { Rejected rejected = new Rejected(); ErrorCondition condition = new ErrorCondition(); condition.setCondition(amqpError); condition.setDescription(message); rejected.setError(condition); return rejected; }
private Rejected createRejected(Symbol amqpError, String message) { Rejected rejected = new Rejected(); ErrorCondition condition = new ErrorCondition(); condition.setCondition(amqpError); condition.setDescription(message); rejected.setError(condition); return rejected; }
public CompletableFuture<Void> deadLetterMessageAsync( byte[] deliveryTag, String deadLetterReason, String deadLetterErrorDescription, Map<String, Object> propertiesToModify, TransactionContext transaction) { Rejected outcome = new Rejected(); ErrorCondition error = new ErrorCondition(ClientConstants.DEADLETTERNAME, null); Map<String, Object> errorInfo = new HashMap<String, Object>(); if(!StringUtil.isNullOrEmpty(deadLetterReason)) { errorInfo.put(ClientConstants.DEADLETTER_REASON_HEADER, deadLetterReason); } if(!StringUtil.isNullOrEmpty(deadLetterErrorDescription)) { errorInfo.put(ClientConstants.DEADLETTER_ERROR_DESCRIPTION_HEADER, deadLetterErrorDescription); } if(propertiesToModify != null) { errorInfo.putAll(propertiesToModify); } error.setInfo(errorInfo); outcome.setError(error); return this.updateMessageStateAsync(deliveryTag, outcome, transaction); }
@Override public void onResponse(AmqpProtocolConverter converter, Response response) throws IOException { if (response.isException()) { ExceptionResponse er = (ExceptionResponse) response; Rejected rejected = new Rejected(); rejected.setError(new ErrorCondition(Symbol.valueOf("failed"), er.getException().getMessage())); delivery.disposition(rejected); } else { delivery.disposition(Accepted.getInstance()); } LOG.debug("TX: {} settling {}", operation, action); delivery.settle(); session.pumpProtonToSocket(); } });
@Override public void onResponse(AmqpProtocolConverter converter, Response response) throws IOException { if (response.isException()) { ExceptionResponse er = (ExceptionResponse) response; Rejected rejected = new Rejected(); rejected.setError(new ErrorCondition(Symbol.valueOf("failed"), er.getException().getMessage())); delivery.disposition(rejected); } else { delivery.disposition(Accepted.getInstance()); } LOG.debug("TX: {} settling {}", operation, action); delivery.settle(); session.pumpProtonToSocket(); } });
private void rejectMessage(Delivery delivery, Symbol errorCondition, String errorMessage) { ErrorCondition condition = new ErrorCondition(); condition.setCondition(errorCondition); condition.setDescription(errorMessage); Rejected rejected = new Rejected(); rejected.setError(condition); afterIO(new IOCallback() { @Override public void done() { connection.runLater(() -> { delivery.disposition(rejected); delivery.settle(); connection.flush(); }); } @Override public void onError(int errorCode, String errorMessage) { } }); }
/** * Sends acknowledgement of this message using the provided ACK_TYPE. * @param ackType acknowledgement type to send */ public void acknowledge(ACK_TYPE ackType) { switch(ackType) { // Codes_SRS_AMQPSMESSAGE_14_001: [If the ACK_TYPE is COMPLETE, the function shall set an Accepted disposition on the private Delivery object.] case COMPLETE: _delivery.disposition(Accepted.getInstance()); break; // Codes_SRS_AMQPSMESSAGE_14_002: [If the ACK_TYPE is ABANDON, the function shall set a Released disposition on the private Delivery object.] case ABANDON: _delivery.disposition(Released.getInstance()); break; // Codes_SRS_AMQPSMESSAGE_14_003: [If the ACK_TYPE is REJECT, the function shall set a Rejected disposition on the private Delivery object.] case REJECT: _delivery.disposition(new Rejected()); break; default: //This should never happen throw new IllegalStateException("Invalid ack type given. Type "+ ackType +" does not exist."); } // Codes_SRS_AMQPSMESSAGE_14_005: [The function shall settle the delivery after setting the proper disposition.] _delivery.settle(); }
@Override public void run() { checkClosed(); try { if (!delivery.isSettled()) { delivery.disposition(new Rejected()); delivery.settle(); session.pumpToProtonTransport(request); } request.onSuccess(); } catch (Exception e) { request.onFailure(e); } } });
private void rejectMessage(Delivery delivery, Symbol errorCondition, String errorMessage) { ErrorCondition condition = new ErrorCondition(); condition.setCondition(errorCondition); condition.setDescription(errorMessage); Rejected rejected = new Rejected(); rejected.setError(condition); afterIO(new IOCallback() { @Override public void done() { connection.lock(); try { delivery.disposition(rejected); delivery.settle(); } finally { connection.unlock(); } connection.flush(); } @Override public void onError(int errorCode, String errorMessage) { } }); }
private void actualDelivery(Delivery delivery, Receiver receiver, ReadableBuffer data, Transaction tx) { try { sessionSPI.serverSend(this, tx, receiver, delivery, address, delivery.getMessageFormat(), data, routingContext); } catch (Exception e) { log.warn(e.getMessage(), e); Rejected rejected = new Rejected(); ErrorCondition condition = new ErrorCondition(); if (e instanceof ActiveMQSecurityException) { condition.setCondition(AmqpError.UNAUTHORIZED_ACCESS); } else { condition.setCondition(Symbol.valueOf("failed")); } connection.runLater(() -> { condition.setDescription(e.getMessage()); rejected.setError(condition); delivery.disposition(rejected); delivery.settle(); flow(); connection.flush(); }); } }