1

STOMPプロトコルを介していくつかのActiveMQトピックとキューに接続するiOSクライアントがあります。サーバーに接続すると、次のメッセージが送信されます。

2012-10-30 10:19:29,757 [MQ NIO Worker 2] TRACE StompIO 
CONNECT
passcode:*****
login:system

2012-10-30 10:19:29,758 [MQ NIO Worker 2] DEBUG ProtocolConverter
2012-10-30 10:19:29,775 [MQ NIO Worker 2] TRACE StompIO
CONNECTED
heart-beat:0,0
session:ID:mbp.local-0123456789
server:ActiveMQ/5.6.0
version:1.0

次に、次のメッセージを使用していくつかのトピックをサブスクライブします。

2012-10-30 10:19:31,028 [MQ NIO Worker 2] TRACE StompIO 
SUBSCRIBE
activemq.subscriptionName:user@mail.com-/topic/SPOT.SPOTCODE
activemq.prefetchSize:1
activemq.dispatchAsync:true
destination:/topic/SPOT.SPOTCODE
client-id:1234
activemq.retroactive:true

ActiveMQサーバーで2つの問題に直面しています。接続するたびにNumber of Consumers、Webインターフェイスの列がインクリメントされるため、実際のコンシューマーは1つだけですが、コンシューマーの数は約50です。しかし、最も問題のある問題は、メッセージング環境をテストするために別のiOSデバイスをラップトップに接続すると、ActiveMQに接続するときに次のエラーが発生することです。

WARN | Async error occurred: javax.jms.JMSException: Durable consumer is in use for client: ID:mbp.local-0123456789 and subscriptionName: user@mail.com-/topic/SPOT.SPOTCODE

これは、他のデバイスがアプリを実行していないときにこのロギングの試行が行われるため、STOMPを介したActiveMQからの切断が適切に機能していないようです。この問題を解決するために、次のことを試しました。

  • トピックをサブスクライブしようとするときは、常にログオフしてください。
  • 申し込む

現在、ラップトップでサーバーを実行しているv5.6.0を使用しています。

4

1 に答える 1

3

ActiveMQサイトのSTOMPページを読むと、STOMP永続サブスクライバーを使用するには、client-idとactivemq-subscriptionNameが一致している必要があることがわかります。これらの値は、クライアントごとに異なる必要があります。そうでない場合、名前の衝突のために同じエラーが表示されます。

于 2012-10-30T20:16:33.173 に答える