私はSpringでApacheActiveMQを使用しています.....私が直面している問題は、Machine1などの1つのマシンでプロデューサーを作成し、Machine2などの2番目のマシンで1つのコンシューマーを作成していることです... Machine1は、単純なサーブレット呼び出しを呼び出して、Machine2でコンシューマーを作成します。私が直面している問題は、プロデューサーが指定された時間内にデータパケットを送信できない場合、とにかく、 Machine2からコンシューマーとキューを削除します...指定された期間内にプロデューサーからパケットを取得しなかった場合に、コンシューマーとキューを自動削除してビジネスロジックを実行するように設定できますか?
connectionFactory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER,ActiveMQConnection.DEFAULT_PASSWORD,ConnectorURL);
connection = connectionFactory.createConnection();
connection.start();
session = connection.createSession(transacted, Session.AUTO_ACKNOWLEDGE);
destination = session.createQueue(queueID+"");
connection = connectionFactory.createConnection();
connection.start();
consumer = session.createConsumer(destination);
基本的に、このコードはアプリケーションのコンシューマーを作成します。次に、このコンシューマーをアプリケーションリスナーに割り当て、プロデューサーがコンシューマーにメッセージを送信するかどうかをリッスンします。
ScenarioExecutionQueueListenerImpl executionQueueListener = new ScenarioExecutionQueueListenerImpl(scenario,result, host);
beanFactory.autowireBean(executionQueueListener);
connection.setExceptionListener(executionQueueListener);
Message message = consumer.receive();
consumer.setMessageListener(executionQueueListener);
executionQueueListener.setConsumer(consumer);
executionQueueListener.onMessage(message);