1

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.)

送信されたメッセージが確実なメッセージでないことを確認するにはどうすればよいですか? これは慰めの構成変数ですか?bytesこれは、私が送信しようとしているオブジェクトがどこにあるかを使用しようとしている単純な 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)
4

2 に答える 2

1

これは、QOS を適用することで修正できます。

    JmsTemplate jmsTemplate = new JmsTemplate(cachingConnectionFactory);
    jmsTemplate.setDefaultDestinationName(topic);
    jmsTemplate.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
    jmsTemplate.setExplicitQosEnabled(true);
于 2018-10-05T10:36:44.597 に答える
-1

Direct Transportアプライアンスの接続工場設定で がチェックされていることを確認してください。

SolAdmin の JMS 接続ファクトリー設定ページ

接続ファクトリのDirect Transport設定は、非永続メッセージに使用するトランスポートを制御します。

于 2016-04-29T03:00:18.820 に答える