0

アプリをカスタム サービスに統合するために Apache ActiveMQ を使用しています。今のように一度だけではなく、常にこれを実行する必要があります。以下のコードは機能しますが、すべてのメッセージを受信するために接続をアクティブに維持する必要があるのは 1 つのメッセージだけです。

using (var connection = (Apache.NMS.ActiveMQ.Connection)factory.CreateConnection())
{
   connection.UserName = Username;
   connection.Password = Password;

   using (var session = connection.CreateSession())
   {
        IDestination destination = SessionUtil.GetDestination(session, "queue://" + Queue);

        using (IMessageConsumer consumer = session.CreateConsumer(destination))
        //using (IMessageConsumer consumer = session.CreateDurableConsumer(new ActiveMQTopic(Queue), "fpapp", null, false))
        {
            consumer.Listener += ConsumerOnListener;
            connection.Start();
        }
    }
}

私はいくつかの調査を行い、耐久性のあるコンシューマーを作成する必要があることを発見しました。それが私が試したことです (コメント行)。ネットワーク接続でトピックをサブスクライブできないと表示されます。

何か案は?

PS: 私は ActiveMQ をまったく初めて使用します。

ありがとう

4

1 に答える 1

1

接続オブジェクトを使用ブロックから外してください。それはします。C# API では通常の接続は永続的ですが、STOMP ではハートビートを設定する必要があります。

于 2015-10-07T19:17:44.210 に答える