Message Acknowledgement has nothing to do with the producer. The Queue Session has Acknowledgement mode as one of it's parameters because you can create consumers/producers alike from a session and the Ack Mode affects only the consumer.
message will not be registered with a queue
Not sure what exactly you mean by that. Are you saying when will a message be *not* sent to the queue, after a producer calls send(..)? The API has the following Exceptions for the send() method:
JMSException - if the JMS provider fails to send the message due to some internal error. Internal error is anything related to your network, port accessibility, provider not running scenarios..
MessageFormatException - if an invalid message is specified.
InvalidDestinationException - if a client uses this method with an invalid destination.
UnsupportedOperationException - if a client uses this method with a MessageProducer that specified a destination at creation time.
And when a message is not acknowledged by the consumer, the JMS provider retains the message and delivers it the next time again, till an acknowledgement is received (unless, the Ack Mode is AUTO_ACKNOWLEDGE in which case, a delivery to the consumer is automatically acknowledged.