次のようにメッセージを生成するための簡単な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
20 秒後にMJ_SAF
キューに送信されると予想されますが、Web コンソールに接続すると、次の結果が表示されました。
に 2 つのメッセージを保存しましMJ_SAF
たが、正しくありませんが、通常 (スケジューリングなしで) メッセージを送信すると、Web コンソールにメッセージが表示されます。
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");
producer.send(message);
}
上記のコードにより、すべてがうまくいきます:
この振る舞いがわかりません。誰かがこれの理由を知っていますか?