Search code examples
scalajmssolace

How to NOT send an assured message via solace JMS


I have a very simple producer type program that tries to send a ByteMessage to a topic.

My program is receiving the error com.solacesystems.jms.ConfigurationException: Error sending message - operation not supported on router (Cannot send assured message: Assured message delivery is not enabled on this channel.)

How do I go about ensuring that the message sent is not an assured message? Is this some solace configuration variable? Here is the simple JMS related code Im trying to use where bytes is the object I'm trying to send:

val connection = connectionFactory.createConnection()
val session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE)
val publishDestination = session.createTopic(solace.TOPIC)
val message = new SolBytesMessage()
message.writeBytes(bytes)
val producer = session.createProducer(publishDestination)
producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT)
log.info("Sending message")
producer.send(publishDestination, message)

Solution

  • Please verify that Direct Transport is checked in the connection factory settings on the appliance.

    JMS Connection Factory setting page in SolAdmin's

    The Direct Transport setting in the connection factory controls the transport to use for non-persistent messages.