我正在學習如何使用ActiveMQ,現在我們正面臨以下問題。ActiveMQ:如何出列舊信息?
假設我在ActiveMQ上有一個名爲topic.test的主題,它有兩個訂閱者。 在給定的時刻,我只有一個訂閱者在等待消息,而一個製作者發送了一個消息給我上面提到的話題。
好的,連接的用戶會收到消息,但其他用戶在連接後不會收到該消息嗎?那麼,就我而言,這不會發生:我的訂戶只能在連接時接收消息。所有其他未連接時發送的消息都沒有被他們收到。我可能做錯了什麼?
這裏是我寫來測試ActiveMQ的一些源代碼。也許你會發現它有什麼問題。
我consummer代碼:
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");
Connection connection = connectionFactory.createConnection();
connection.setClientID("leitorTeste");
conexao.start();
Session sessao = conexao.createSession(false, Session.AUTO_ACKNOWLEDGE);
Topic fonte = sessao.createTopic("topic.test");
MessageConsumer consumer = sessao.createConsumer(fonte);
javax.jms.Message presente = null;
while ((presente = consumer.receive()) != null) {
System.out.println(((TextMessage) presente).getText());
}
consumer.setMessageListener(new LeitorMensagens());
conexao.close();
這裏是我的製片代碼:
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");
Connection connection = connectionFactory.createConnection();
Session sessao = conexao.createSession(true, Session.AUTO_ACKNOWLEDGE);
connection.start();
Destination destino = sessao.createTopic("topic.test");
MessageProducer produtorMensagem = sessao.createProducer(destino);
produtorMensagem.setDeliveryMode(DeliveryMode.PERSISTENT);
TextMessage message = sessao.createTextMessage("Hi!");
produtorMensagem.send(message);
sessao.commit();
connection.close();
是否有任何其他的配置我要補充的ActiveMQ讓我的消費者能得到較舊的郵件?
非常感謝。完美解決了我的問題 – 2009-12-03 12:18:34