2

ActiveMQ5.6.0とActiveMQNMSクライアントを使用しています。

次のコードを使用してブローカーに接続します。

var connectionFactory = new ConnectionFactory(
    "failover:(tcp://localhost:61616)?transport.timeout=5000"
    );

connection = connectionFactory.CreateConnection();    
connection.Start();

connection.ConnectionResumedListener += OnConnectionResumed;

次に、ブローカーを停止して再開します。その後、メソッドOnConnectionResumedで

private void OnConnectionResumed()
{
    var session = connection.CreateSession();

    ...
}

セッションを作成しようとすると、常にフェイルオーバータイムアウト例外が発生します。

私は何が間違っているのですか?

ありがとう

4

1 に答える 1

1

この問題は、再開された呼び出しが行われるスレッドでセッションを作成したために発生しました。

正しいコードは次のとおりです。

private void OnConnectionResumed()
{
    Task.Factory.StartNew(() =>
        {
            var session = connection.CreateSession();

            ...
        });
}
于 2012-08-02T15:03:47.360 に答える