如何不通过安慰 JMS 发送有保证的消息

How to NOT send an assured message via solace JMS

我有一个非常简单的生产者类型程序,它尝试将 ByteMessage 发送到主题。

我的程序收到错误 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.)

如何确保发送的消息不是可靠消息?这是一些安慰配置变量吗?这是我尝试使用的与 JMS 相关的简单代码,其中 bytes 是我要发送的对象:

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)

请确认在设备的连接出厂设置中选中 Direct Transport

连接工厂中的 Direct Transport 设置控制用于非持久消息的传输。

这可以通过执行 QOS 来解决:

    JmsTemplate jmsTemplate = new JmsTemplate(cachingConnectionFactory);
    jmsTemplate.setDefaultDestinationName(topic);
    jmsTemplate.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
    jmsTemplate.setExplicitQosEnabled(true);

对于通过搜索此错误消息发现此问题的任何人 - 如果您确实想在这种情况下发送有保证的消息,请启用直接传输并编辑 Solace 代理上的客户端配置文件以具有“发送有保证的消息”已启用。