code: public void flush() {
  
          try {
              synchronized (sendMessageLock) {
                  inflightSendMessageBatches.acquire(config.getMaxInflightOutboundBatches());
                  inflightSendMessageBatches.release(config.getMaxInflightOutboundBatches());
              }
              synchronized (deleteMessageLock) {
                  inflightDeleteMessageBatches.acquire(config.getMaxInflightOutboundBatches());
                  inflightDeleteMessageBatches.release(config.getMaxInflightOutboundBatches());
              }
              synchronized (changeMessageVisibilityLock) {
                  inflightChangeMessageVisibilityBatches.acquire(config.getMaxInflightOutboundBatches());
                  inflightChangeMessageVisibilityBatches.release(config.getMaxInflightOutboundBatches());
              }
          } catch (InterruptedException e) {
              Thread.currentThread().interrupt();
          }
      }
docs: Flushes all outstanding outbound requests ({@code SendMessage}, {@code DeleteMessage},
  {@code ChangeMessageVisibility}) in this buffer.
  <p>
  The call returns successfully when all outstanding outbound requests submitted before the
  call are completed (i.e. processed by SQS).