Scala 如何不通过solace JMS发送有保证的消息

Scala 如何不通过solace JMS发送有保证的消息,scala,jms,solace,Scala,Jms,Solace,我有一个非常简单的制作人类型的程序,它试图向主题发送ByteMessage 我的程序正在接收错误com.solacesystems.jms.ConfigurationException:错误发送消息-路由器不支持操作(无法发送保证消息:此通道上未启用保证消息传递)。 我如何确保发送的消息不是可靠的消息?这是某种solace配置变量吗?下面是我尝试使用的与JMS相关的简单代码,其中字节是我尝试发送的对象: val connection = connectionFactory.createConne

我有一个非常简单的制作人类型的程序,它试图向主题发送ByteMessage

我的程序正在接收错误
com.solacesystems.jms.ConfigurationException:错误发送消息-路由器不支持操作(无法发送保证消息:此通道上未启用保证消息传递)。

我如何确保发送的消息不是可靠的消息?这是某种solace配置变量吗?下面是我尝试使用的与JMS相关的简单代码,其中
字节
是我尝试发送的对象:

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)

请验证是否在设备的连接出厂设置中选中了直接传输


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

请验证是否在设备的连接工厂设置中选中了
直接传输


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

这可以通过以下方式解决:

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

这可以通过强制QOS进行修复:

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

有没有办法在未启用直接传输的情况下发送邮件?这并没有100%解决我的答案,但通过solace客户端更改我的设置是解决方案。有没有办法在未启用直接传输的情况下发送邮件?这并没有100%解决我的答案,但通过solace客户端更改我的设置是解决方案。