Interface ClientProducer
- All Superinterfaces:
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 Summary
Modifier and TypeMethodDescriptionvoid
close()
Closes the ClientProducer.Returns the address where messages will be sent.int
Returns the maximum rate at which a ClientProducer can send messages per second.boolean
Returns whether the producer will block when sending durable messages.boolean
Returns whether the producer will block when sending non-durable messages.boolean
isClosed()
Returns whether the producer is closed or not.void
Sends a message to the specified address instead of the ClientProducer's address.void
Sends a message to an address.void
send
(Message message, SendAcknowledgementHandler handler) Sends a message to the specified address instead of the ClientProducer's address.void
send
(SimpleString address, Message message) Sends a message to the specified address instead of the ClientProducer's address.void
send
(SimpleString address, Message message, SendAcknowledgementHandler handler) Sends a message to the specified address instead of the ClientProducer's address.
-
Method Details
-
getAddress
SimpleString getAddress()Returns the address where messages will be sent.
The address can benull
if the ClientProducer was creating without specifying an address, that is by usingClientSession.createProducer()
.- Returns:
- the address where messages will be sent
-
send
Sends a message to an address. specified inClientSession.createProducer(String)
or similar methods.
This will block until confirmation that the message has reached the server has been received ifServerLocator.setBlockOnDurableSend(boolean)
orServerLocator.setBlockOnNonDurableSend(boolean)
are set totrue
for the specified message type.- Parameters:
message
- the message to send- Throws:
ActiveMQException
- if an exception occurs while sending the message
-
send
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 sendhandler
- handler to call after receiving a SEND acknowledgement from the server- Throws:
ActiveMQException
- if an exception occurs while sending the message
-
send
Sends a message to the specified address instead of the ClientProducer's address.
This will block until confirmation that the message has reached the server has been received ifServerLocator.setBlockOnDurableSend(boolean)
orServerLocator.setBlockOnNonDurableSend(boolean)
are set to true for the specified message type.- Parameters:
address
- the address where the message will be sentmessage
- the message to send- Throws:
ActiveMQException
- if an exception occurs while sending the message
-
send
void send(SimpleString address, 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 as long asServerLocator.setConfirmationWindowSize(int)
was set.Notice that if no confirmationWindowsize is set
- Parameters:
address
- the address where the message will be sentmessage
- the message to sendhandler
- handler to call after receiving a SEND acknowledgement from the server- Throws:
ActiveMQException
- if an exception occurs while sending the message
-
send
Sends a message to the specified address instead of the ClientProducer's address.
This will block until confirmation that the message has reached the server has been received ifServerLocator.setBlockOnDurableSend(boolean)
orServerLocator.setBlockOnNonDurableSend(boolean)
are set to true for the specified message type.- Parameters:
address
- the address where the message will be sentmessage
- the message to send- Throws:
ActiveMQException
- if an exception occurs while sending the message
-
close
Closes the ClientProducer. If already closed nothing is done.- Specified by:
close
in interfaceAutoCloseable
- Throws:
ActiveMQException
- if an exception occurs while closing the producer
-
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
-