Interface Receiver

  • All Superinterfaces:
    java.lang.AutoCloseable
    All Known Subinterfaces:
    StreamReceiver
    All Known Implementing Classes:
    ClientReceiver, ClientStreamReceiver

    public interface Receiver
    extends java.lang.AutoCloseable
    AMQP Receiver that provides an interface to receive complete Deliveries from a remote peer. Deliveries that are returned from the receive() methods will be complete and can be read immediately without blocking waiting for additional delivery data to arrive.
    See Also:
    StreamReceiver
    • Method Detail

      • openFuture

        java.util.concurrent.Future<Receiver> openFuture()
        Returns:
        a Future that will be completed when the remote opens this Receiver.
      • close

        void close()
        Requests a close of the Receiver at the remote and waits until the Receiver has been fully closed or until the configured ReceiverOptions.closeTimeout() is exceeded.
        Specified by:
        close in interface java.lang.AutoCloseable
      • detach

        void detach()
        Requests a detach of the Receiver at the remote and waits until the Receiver has been fully detached or until the configured SenderOptions.closeTimeout() is exceeded.
      • closeAsync

        java.util.concurrent.Future<Receiver> closeAsync()
        Requests a close of the Receiver link at the remote and returns a Future that will be completed once the link has been closed.
        Returns:
        a Future that will be completed when the remote closes this Receiver link.
      • closeAsync

        java.util.concurrent.Future<Receiver> closeAsync​(ErrorCondition error)
        Requests a close of the Receiver link at the remote and returns a Future that will be completed once the link has been closed.
        Parameters:
        error - The ErrorCondition to transmit to the remote along with the close operation.
        Returns:
        a Future that will be completed when the remote closes this Receiver link.
      • detachAsync

        java.util.concurrent.Future<Receiver> detachAsync()
        Requests a detach of the Receiver link at the remote and returns a Future that will be completed once the link has been detached.
        Returns:
        a Future that will be completed when the remote detaches this Receiver link.
      • detachAsync

        java.util.concurrent.Future<Receiver> detachAsync​(ErrorCondition error)
        Requests a detach of the Receiver link at the remote and returns a Future that will be completed once the link has been detached.
        Parameters:
        error - The ErrorCondition to transmit to the remote along with the detach operation.
        Returns:
        a Future that will be completed when the remote detaches this Receiver link.
      • address

        java.lang.String address()
                          throws ClientException
        Returns the address that the Receiver instance will be subscribed to.
        • If the Receiver was created with the dynamic receiver methods then the method will return the dynamically created address once the remote has attached its end of the receiver link. Due to the need to await the remote peer to populate the dynamic address this method will block until the open of the receiver link has completed.
        • If not a dynamic receiver then the address returned is the address passed to the original Session.openReceiver(String) or Session.openReceiver(String, ReceiverOptions) methods.
        Returns:
        the address that this Receiver is sending to.
        Throws:
        ClientException - if an error occurs while obtaining the Receiver address.
      • source

        Source source()
               throws ClientException
        Returns an immutable view of the remote Source object assigned to this receiver link. If the attach has not completed yet this method will block to await the attach response which carries the remote Source.
        Returns:
        the remote Source node configuration.
        Throws:
        ClientException - if an error occurs while obtaining the Receiver remote Source.
      • target

        Target target()
               throws ClientException
        Returns an immutable view of the remote Target object assigned to this receiver link. If the attach has not completed yet this method will block to await the attach response which carries the remote Source.
        Returns:
        the remote Target node configuration.
        Throws:
        ClientException - if an error occurs while obtaining the Receiver remote Target.
      • properties

        java.util.Map<java.lang.String,​java.lang.Object> properties()
                                                                   throws ClientException
        Returns the properties that the remote provided upon successfully opening the Receiver. If the attach has not completed yet this method will block to await the attach response which carries the remote properties. If the remote provides no properties this method will return null.
        Returns:
        any properties provided from the remote once the receiver has successfully opened.
        Throws:
        ClientException - if an error occurs while obtaining the Receiver remote properties.
      • offeredCapabilities

        java.lang.String[] offeredCapabilities()
                                        throws ClientException
        Returns the offered capabilities that the remote provided upon successfully opening the Receiver. If the attach has not completed yet this method will block to await the attach response which carries the remote offered capabilities. If the remote provides no capabilities this method will return null.
        Returns:
        any capabilities provided from the remote once the receiver has successfully opened.
        Throws:
        ClientException - if an error occurs while obtaining the Receiver remote offered capabilities.
      • desiredCapabilities

        java.lang.String[] desiredCapabilities()
                                        throws ClientException
        Returns the desired capabilities that the remote provided upon successfully opening the Receiver. If the attach has not completed yet this method will block to await the attach response which carries the remote desired capabilities. If the remote provides no capabilities this method will return null.
        Returns:
        any desired capabilities provided from the remote once the receiver has successfully opened.
        Throws:
        ClientException - if an error occurs while obtaining the Receiver remote desired capabilities.
      • addCredit

        Receiver addCredit​(int credits)
                    throws ClientException
        Adds credit to the Receiver link for use when there receiver has not been configured with a credit window. When credit window is configured credit replenishment is automatic and calling this method will result in an exception indicating that the operation is invalid.

        If the Receiver is draining and this method is called an exception will be thrown to indicate that credit cannot be replenished until the remote has drained the existing link credit.

        Parameters:
        credits - The number of credits to add to the Receiver link.
        Returns:
        this Receiver instance.
        Throws:
        ClientException - if an error occurs while attempting to add new Receiver link credit.
      • receive

        Delivery receive()
                  throws ClientException
        Blocking receive method that waits forever for the remote to provide a Delivery for consumption.

        Receive calls will only grant credit on their own if a credit window is configured in the ReceiverOptions which is done by default. If the client application has configured no credit window than this method will not grant any credit when it enters the wait for new incoming messages.

        Returns:
        a new Delivery received from the remote.
        Throws:
        ClientException - if the Receiver or its parent is closed when the call to receive is made.
      • receive

        Delivery receive​(long timeout,
                         java.util.concurrent.TimeUnit unit)
                  throws ClientException
        Blocking receive method that waits the given time interval for the remote to provide a Delivery for consumption. The amount of time this method blocks is based on the timeout value. If timeout is equal to -1 then it blocks until a Delivery is received. If timeout is equal to zero then it will not block and simply return a Delivery if one is available locally. If timeout value is greater than zero then it blocks up to timeout amount of time.

        Receive calls will only grant credit on their own if a credit window is configured in the ReceiverOptions which is done by default. If the client application has not configured a credit window or granted credit manually this method will not automatically grant any credit when it enters the wait for a new incoming Delivery.

        Parameters:
        timeout - The timeout value used to control how long the receive method waits for a new Delivery.
        unit - The unit of time that the given timeout represents.
        Returns:
        a new Delivery received from the remote.
        Throws:
        ClientException - if the Receiver or its parent is closed when the call to receive is made.
      • tryReceive

        Delivery tryReceive()
                     throws ClientException
        Non-blocking receive method that either returns a message is one is immediately available or returns null if none is currently at hand.
        Returns:
        a new Delivery received from the remote or null if no pending deliveries are available.
        Throws:
        ClientException - if the Receiver or its parent is closed when the call to try to receive is made.
      • drain

        java.util.concurrent.Future<Receiver> drain()
                                             throws ClientException
        Requests the remote to drain previously granted credit for this Receiver link.
        Returns:
        a Future that will be completed when the remote drains this Receiver link.
        Throws:
        ClientException - if an error occurs while attempting to drain the link credit.
      • queuedDeliveries

        long queuedDeliveries()
                       throws ClientException
        Returns the number of Deliveries that are currently held in the Receiver delivery queue. This number is likely to change immediately following the call as more deliveries arrive but can be used to determine if any pending Delivery work is ready.
        Returns:
        the number of deliveries that are currently buffered locally.
        Throws:
        ClientException - if an error occurs while attempting to fetch the queue count.