Interface ClientProducer
- All Superinterfaces:
AutoCloseable
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 TypeMethodDescriptionvoidclose()Closes the ClientProducer.Returns the address where messages will be sent; the address can benullif theClientProducerwas created without specifying an address, e.g. by usingClientSession.createProducer().intReturns the maximum rate at which a ClientProducer can send messages per second.booleanReturnstrueif the producer blocks when sending durable messages,falseelse.booleanReturnstrueif the producer blocks when sending non-durable messages,falseelse.booleanisClosed()Returnstrueif the producer is closed,falseelse.voidSends a message to the specified address instead of the ClientProducer's address.voidSends a message to an address. specified inClientSession.createProducer(String)or similar methods.voidsend(Message message, SendAcknowledgementHandler handler) Sends a message to the specified address instead of the ClientProducer's address.voidsend(SimpleString address, Message message) Sends a message to the specified address instead of the ClientProducer's address.voidsend(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 benullif theClientProducerwas created without specifying an address, e.g. by usingClientSession.createProducer().- Returns:
- the address where messages will be sent; the address can be
nullif theClientProducerwas created without specifying an address, e.g. by usingClientSession.createProducer()
-
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 if
ServerLocator.setBlockOnDurableSend(boolean)orServerLocator.setBlockOnNonDurableSend(boolean)are set totruefor 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 if
ServerLocator.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 as
ServerLocator.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 if
ServerLocator.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:
closein interfaceAutoCloseable- Throws:
ActiveMQException- if an exception occurs while closing the producer
-
isClosed
boolean isClosed()Returnstrueif the producer is closed,falseelse.- Returns:
trueif the producer is closed,falseelse
-
isBlockOnDurableSend
boolean isBlockOnDurableSend()Returnstrueif the producer blocks when sending durable messages,falseelse.- Returns:
trueif the producer blocks when sending durable messages,falseelse
-
isBlockOnNonDurableSend
boolean isBlockOnNonDurableSend()Returnstrueif the producer blocks when sending non-durable messages,falseelse.- Returns:
trueif the producer blocks when sending non-durable messages,falseelse
-
getMaxRate
int getMaxRate()Returns the maximum rate at which a ClientProducer can send messages per second.- Returns:
- the maximum rate at which a ClientProducer can send messages per second
-