次のように簡単なプログラムを作成ActiveMQ
します。
public static void main(String[] args) throws Throwable
{
final ActiveMQConnectionFactory conFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");
final QueueConnection connection = conFactory.createQueueConnection();
final Session session = connection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
final Destination destination = new ActiveMQQueue("MJ_SAF");
final MessageProducer producer = session.createProducer(destination);
Message message = session.createTextMessage("test");
message.setLongProperty(ScheduledMessage.AMQ_SCHEDULED_DELAY, 20);
message.setLongProperty(ScheduledMessage.AMQ_SCHEDULED_PERIOD, 1);
message.setIntProperty(ScheduledMessage.AMQ_SCHEDULED_REPEAT, 1);
producer.send(message);
}
このプログラムを実行すると、メッセージはActiveMQ
ブローカーに適切に送信されますが、プログラムは終了せず、実行され続けます。上記のプログラムの最後にステートメントを追加するconnection.close();
と、プログラムが完了して正常に終了します。
私の質問は次のとおりです。この動作の理由は何ですか?