0

こんにちは、アプリケーション ログに以下の例外スタック トレースが記録されています。

20/09/2013 22.26.49 - Caught exception in Exception Strategy: Connection and domain type do not match java.lang.IllegalArgumentException: Connection and domain type do not match at org.mule.transport.jms.Jms102bSupport.createSession(Jms102bSupport.java:108) at org.mule.transport.jms.JmsConnector.getSession(JmsConnector.java:579) at org.mule.transport.jms.JmsConnector.getSession(JmsConnector.java:558) at org.mule.transport.jms.JmsMessageDispatcher.dispatchMessage(JmsMessageDispatcher.java:141) at org.mule.transport.jms.JmsMessageDispatcher.doDispatch(JmsMessageDispatcher.java:73) at org.mule.transport.AbstractMessageDispatcher$Worker.run(AbstractMessageDispatcher.java:262) at org.mule.work.WorkerContext.run(WorkerContext.java:310) at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$CallerRunsPolicy.rejectedExecution(ThreadPoolExecutor.java:1895) at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:765) at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1288) at org.mule.work.ScheduleWorkExecutor.doExecute(ScheduleWorkExecutor.java:41)

意味がよく理解できませんが、

誰かが接続とドメインタイプが一致しないということの意味を説明してもらえますか

おそらく、それが発生する可能性のあるシナリオの例です。

データは、設定されたミュール アウトバウンドを使用して送信されます

<multicasting-router>

    <jms:outbound-endpoint topic="SAMPLEMESSAGES" transformer-refs="DomToXml ObjectToJms" connector-ref="jmsConnector" />

</multicasting-router>

コネクタの構成はここにありますが、何らかの理由でここに xml を貼り付けることができません

アーチャーが述べたように、私はactiveMQソースコードを見て、ここに貼り付けただけです



@Override
    public Session createSession(Connection connection, boolean topic, boolean transacted,
        int ackMode, boolean noLocal) throws JMSException
    {
        if (connection == null)
        {
            throw new IllegalArgumentException("Connection is null");
        }
        if (topic && connection instanceof TopicConnection)
        {
            return ((TopicConnection) connection).createTopicSession(noLocal, ackMode);
        }
        else if (connection instanceof QueueConnection)
        {
            // for transacted sessions the ackMode is always ignored, but
            // set it for readability (SESSION_TRANSACTION is recommented
            // for this case).
            return ((QueueConnection) connection).createQueueSession(
                    transacted, (transacted ? Session.SESSION_TRANSACTED : ackMode));
        }
        else
        {
            throw new IllegalArgumentException("Connection and domain type do not match, connection is of type " + connection.getClass().getName());
        }
    }

どのような状況で着信クライアント接続が topicConnection または queueConnection ではないか、どのクライアント コードを記述して例外を発生させることができるかを理解したい

ありがとう

4

2 に答える 2

2

ActiveMQ コネクタで使用する JMS バージョンを指定しなかったため、Mule はデフォルトで、仕様の古い非推奨バージョン 1.0.2b を使用します。

1.1 を使用するようにコネクタを構成し、まだ問題があるかどうかを確認します。また、ブローカー URL を指定する場合、接続ファクトリーを提供する必要はありません。

だから試してみてください:

<jms:activemq-connector name="jmsConnector" specification="1.1"
                        brokerURL="tcp://10.209.130.10:61616">
    <spring:property name="retryPolicyTemplate" ref="ThreadingPolicyTemplate" />
</jms:activemq-connector>
于 2013-09-21T17:24:24.637 に答える
0

接続のタイプは、TopicConnection または QueueConnection である必要があります。それ以外の場合、この例外がスローされます。詳細については、ソース コードを参照してください。117行目。

于 2013-09-21T11:31:20.223 に答える