private void sendMessage(final Message msg) { ByteBuffer b = ByteBuffer.allocate(4); b.putInt(count.getAndIncrement()); b.flip(); LOG.trace("sending message [id: {}] to peer", msg.getMessageId()); if (ProtonQoS.AT_MOST_ONCE.equals(sender.getQoS())) { sender.send(b.array(), msg); sentHandler.handle(null); } else { sender.send(b.array(), msg, res -> { if (Accepted.class.isInstance(res.getRemoteState())) { LOG.trace("message [id: {}, remotelySettled: {}] has been accepted by peer", msg.getMessageId(), res.remotelySettled()); res.settle(); if (sentHandler != null) { sentHandler.handle(null); } } else { LOG.warn("message [id: {}] has not been accepted by peer: {}", msg.getMessageId(), res.getRemoteState()); } }); } } }