Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## com.rabbitmq.client
Class RpcClient

    java.lang.Object
      com.rabbitmq.client.RpcClient

Direct Known Subclasses:
  JsonRpcClient

    public class RpcClient

extends java.lang.Object

Convenience class which manages a temporary reply queue for simple RPC-style communication. The class is agnostic about the format of RPC arguments / return values. It simply provides a mechanism for sending a message to an exchange with a given routing key, and waiting for a response on a reply queue.

Field Summary
`protected static int` | `NO_TIMEOUT` NO_TIMEOUT value must match convention on `BlockingCell.uninterruptibleGet(int)`

Constructor Summary
`RpcClient(Channel channel, java.lang.String exchange, java.lang.String routingKey)` Construct a new RpcClient that will communicate on the given channel, sending requests to the given exchange with the given routing key.
`RpcClient(Channel channel, java.lang.String exchange, java.lang.String routingKey, int timeout)` Construct a new RpcClient that will communicate on the given channel, sending requests to the given exchange with the given routing key.

Method Summary
`void` | `checkConsumer()` Private API - ensures the RpcClient is correctly open.
`void` | `close()` Public API - cancels the consumer, thus deleting the temporary queue, and marks the RpcClient as closed.
`Channel` | `getChannel()` Retrieve the channel.
`Consumer` | `getConsumer()` Retrieve the consumer.
`java.util.Map<java.lang.String,BlockingCell<java.lang.Object>>` | `getContinuationMap()` Retrieve the continuation map.
`int` | `getCorrelationId()` Retrieve the correlation id.
`java.lang.String` | `getExchange()` Retrieve the exchange.
`java.lang.String` | `getReplyQueue()` Retrieve the reply queue.
`java.lang.String` | `getRoutingKey()` Retrieve the routing key.
`java.util.Map<java.lang.String,java.lang.Object>` | `mapCall(java.util.Map<java.lang.String,java.lang.Object> message)` Perform an AMQP wire-protocol-table based RPC roundtrip There are some restrictions on the values appearing in the table: they must be of type `String`, `LongString`, `Integer`, `BigDecimal`, `Date`, or (recursively) a `Map` of the enclosing type.
`java.util.Map<java.lang.String,java.lang.Object>` | `mapCall(java.lang.Object[] keyValuePairs)` Perform an AMQP wire-protocol-table based RPC roundtrip, first constructing the table from an array of alternating keys (in even-numbered elements, starting at zero) and values (in odd-numbered elements, starting at one) Restrictions on value arguments apply as in `mapCall(Map)`.
`byte[]` | `primitiveCall(AMQP.BasicProperties props, byte[] message)`
`byte[]` | `primitiveCall(byte[] message)` Perform a simple byte-array-based RPC roundtrip.
`void` | `publish(AMQP.BasicProperties props, byte[] message)`
`protected DefaultConsumer` | `setupConsumer()` Registers a consumer on the reply queue.
`protected java.lang.String` | `setupReplyQueue()` Creates a server-named exclusive autodelete queue to use for receiving replies to RPC requests.
`java.lang.String` | `stringCall(java.lang.String message)` Perform a simple string-based RPC roundtrip.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### NO_TIMEOUT

    protected static final int NO_TIMEOUT

  NO_TIMEOUT value must match convention on `BlockingCell.uninterruptibleGet(int)`

  See Also:
    Constant Field Values

Constructor Detail

### RpcClient

    public RpcClient(Channel channel,
                     java.lang.String exchange,
                     java.lang.String routingKey,
                     int timeout)
              throws java.io.IOException

  Construct a new RpcClient that will communicate on the given channel, sending requests to the given exchange with the given routing key.

  Causes the creation of a temporary private autodelete queue.

  Parameters:
    `channel` - the channel to use for communication
    `exchange` - the exchange to connect to
    `routingKey` - the routing key
    `timeout` - milliseconds before timing out on wait for response
  Throws:
    `java.io.IOException` - if an error is encountered
  See Also:
    `setupReplyQueue()`

### RpcClient

    public RpcClient(Channel channel,
                     java.lang.String exchange,
                     java.lang.String routingKey)
              throws java.io.IOException

  Construct a new RpcClient that will communicate on the given channel, sending requests to the given exchange with the given routing key.

  Causes the creation of a temporary private autodelete queue.

  Waits forever for responses (that is, no timeout).

  Parameters:
    `channel` - the channel to use for communication
    `exchange` - the exchange to connect to
    `routingKey` - the routing key
  Throws:
    `java.io.IOException` - if an error is encountered
  See Also:
    `setupReplyQueue()`

Method Detail

### checkConsumer

    public void checkConsumer()
                       throws java.io.IOException

  Private API - ensures the RpcClient is correctly open.

  Throws:
    `java.io.IOException` - if an error is encountered

### close

    public void close()
               throws java.io.IOException

  Public API - cancels the consumer, thus deleting the temporary queue, and marks the RpcClient as closed.

  Throws:
    `java.io.IOException` - if an error is encountered

### setupReplyQueue

    protected java.lang.String setupReplyQueue()
                                        throws java.io.IOException

  Creates a server-named exclusive autodelete queue to use for receiving replies to RPC requests.

  Returns:
    the name of the reply queue
  Throws:
    `java.io.IOException` - if an error is encountered

### setupConsumer

    protected DefaultConsumer setupConsumer()
                                     throws java.io.IOException

  Registers a consumer on the reply queue.

  Returns:
    the newly created and registered consumer
  Throws:
    `java.io.IOException` - if an error is encountered

### publish

    public void publish(AMQP.BasicProperties props,
                        byte[] message)
                 throws java.io.IOException

  Throws:
    `java.io.IOException`

### primitiveCall

    public byte[] primitiveCall(AMQP.BasicProperties props,
                                byte[] message)
                         throws java.io.IOException,
                                ShutdownSignalException,
                                java.util.concurrent.TimeoutException

  Throws:
    `java.io.IOException`
    `ShutdownSignalException`
    `java.util.concurrent.TimeoutException`

### primitiveCall

    public byte[] primitiveCall(byte[] message)
                         throws java.io.IOException,
                                ShutdownSignalException,
                                java.util.concurrent.TimeoutException

  Perform a simple byte-array-based RPC roundtrip.

  Parameters:
    `message` - the byte array request message to send
  Returns:
    the byte array response received
  Throws:
    `ShutdownSignalException` - if the connection dies during our wait
    `java.io.IOException` - if an error is encountered
    `java.util.concurrent.TimeoutException` - if a response is not received within the configured timeout

### stringCall

    public java.lang.String stringCall(java.lang.String message)
                                throws java.io.IOException,
                                       ShutdownSignalException,
                                       java.util.concurrent.TimeoutException

  Perform a simple string-based RPC roundtrip.

  Parameters:
    `message` - the string request message to send
  Returns:
    the string response received
  Throws:
    `ShutdownSignalException` - if the connection dies during our wait
    `java.io.IOException` - if an error is encountered
    `java.util.concurrent.TimeoutException` - if a timeout occurs before the response is received

### mapCall

    public java.util.Map<java.lang.String,java.lang.Object> mapCall(java.util.Map<java.lang.String,java.lang.Object> message)
                                                             throws java.io.IOException,
                                                                    ShutdownSignalException,
                                                                    java.util.concurrent.TimeoutException

  Perform an AMQP wire-protocol-table based RPC roundtrip
  There are some restrictions on the values appearing in the table:
  they must be of type `String`, `LongString`, `Integer`, `BigDecimal`, `Date`, or (recursively) a `Map` of the enclosing type.

  Parameters:
    `message` - the table to send
  Returns:
    the table received
  Throws:
    `ShutdownSignalException` - if the connection dies during our wait
    `java.io.IOException` - if an error is encountered
    `java.util.concurrent.TimeoutException` - if a timeout occurs before a response is received

### mapCall

    public java.util.Map<java.lang.String,java.lang.Object> mapCall(java.lang.Object[] keyValuePairs)
                                                             throws java.io.IOException,
                                                                    ShutdownSignalException,
                                                                    java.util.concurrent.TimeoutException

  Perform an AMQP wire-protocol-table based RPC roundtrip, first constructing the table from an array of alternating keys (in even-numbered elements, starting at zero) and values (in odd-numbered elements, starting at one)
  Restrictions on value arguments apply as in `mapCall(Map)`.

  Parameters:
    `keyValuePairs` - alternating {key, value, key, value, ...} data to send
  Returns:
    the table received
  Throws:
    `ShutdownSignalException` - if the connection dies during our wait
    `java.io.IOException` - if an error is encountered
    `java.util.concurrent.TimeoutException` - if a timeout occurs before a response is received

### getChannel

    public Channel getChannel()

  Retrieve the channel.

  Returns:
    the channel to which this client is connected

### getExchange

    public java.lang.String getExchange()

  Retrieve the exchange.

  Returns:
    the exchange to which this client is connected

### getRoutingKey

    public java.lang.String getRoutingKey()

  Retrieve the routing key.

  Returns:
    the routing key for messages to this client

### getContinuationMap

    public java.util.Map<java.lang.String,BlockingCell<java.lang.Object>> getContinuationMap()

  Retrieve the continuation map.

  Returns:
    the map of objects to blocking cells for this client

### getCorrelationId

    public int getCorrelationId()

  Retrieve the correlation id.

  Returns:
    the most recently used correlation id

### getReplyQueue

    public java.lang.String getReplyQueue()

  Retrieve the reply queue.

  Returns:
    the name of the client's reply queue

### getConsumer

    public Consumer getConsumer()

  Retrieve the consumer.

  Returns:
    an interface to the client's consumer object

Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD