Interface ClientProducer

  • All Superinterfaces:
    AutoCloseable

    public interface ClientProducer
    extends AutoCloseable
    A ClientProducer is used to send messages to a specific address. Messages are then routed on the server to any queues that are bound to the address. A ClientProducer can either be created with a specific address in mind or with none. With the latter the address must be provided using the appropriate send() method.

    The sending semantics can change depending on what blocking semantics are set via ServerLocator.setBlockOnDurableSend(boolean) and ServerLocator.setBlockOnNonDurableSend(boolean) . If set to true then for each message type, durable and non durable respectively, any exceptions such as the address not existing or security exceptions will be thrown at the time of send. Alternatively if set to false then exceptions will only be logged on the server.

    The send rate can also be controlled via ServerLocator.setProducerMaxRate(int) and the ServerLocator.setProducerWindowSize(int).

    • Method Detail

      • getAddress

        SimpleString getAddress()
        Returns the address where messages will be sent.

        The address can be null if the ClientProducer was creating without specifying an address, that is by using ClientSession.createProducer().
        Returns:
        the address where messages will be sent
      • send

        void send​(Message message,
                  SendAcknowledgementHandler handler)
           throws ActiveMQException
        Sends a message to the specified address instead of the ClientProducer's address.

        This message will be sent asynchronously.

        The handler will only get called if -1.

        Parameters:
        message - the message to send
        handler - handler to call after receiving a SEND acknowledgement from the server
        Throws:
        ActiveMQException - if an exception occurs while sending the message
      • isClosed

        boolean isClosed()
        Returns whether the producer is closed or not.
        Returns:
        true if the producer is closed, false else
      • isBlockOnDurableSend

        boolean isBlockOnDurableSend()
        Returns whether the producer will block when sending durable messages.
        Returns:
        true if the producer blocks when sending durable, false else
      • isBlockOnNonDurableSend

        boolean isBlockOnNonDurableSend()
        Returns whether the producer will block when sending non-durable messages.
        Returns:
        true if the producer blocks when sending non-durable, false else
      • getMaxRate

        int getMaxRate()
        Returns the maximum rate at which a ClientProducer can send messages per second.
        Returns:
        the producers maximum rate