이 코드에서는 게시자 쪽에서 대기열에있는 1 초의 만료 메시지에 대해 setJMSExpiration (1000)을 사용하고 있습니다. 하지만 Consumer Side에서 null 대신 1 초 후에 메시지를 제대로 반환하고 있습니다.Java 프로그래밍에서 ActiveMQ를 사용하여 대기열 메시지의 만료 시간을 설정하려면 어떻게해야합니까?
public class RegistrationPublisher extends Thread{
public void run() {
publisherQueue("Registration.Main.*");
}
public void publisherQueue(String server){
try {
String url="tcp://192.168.20.49:61616";
// Create a ConnectionFactory
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(url);
Connection connection = connectionFactory.createConnection();
connection.start();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Destination destination = session.createQueue(server);
MessageProducer producer = session.createProducer(destination);
producer.setDeliveryMode(DeliveryMode.PERSISTENT);
String text = "Test";
TextMessage message = session.createTextMessage(text);
message.setJMSExpiration(1000);// For Expire message in one second
producer.send(message);
producer.close();
session.close();
connection.close();
}
catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String args[]) throws IOException{
RegistrationPublisher registrationPublisher=new RegistrationPublisher();
registrationPublisher.start();
}
}
"void setJMSExpiration (long expiration) throws JMSException"with org.apache.activemq.command.Message를 사용하고 javax.jsm.Message를 구현했지만 만료 메시지가 작동하지 않습니다. 내가 방법을 따르고 사용 : 공공 무효 setJMSExpiration (긴 것들은 arg0가) JMS 프로 바이더를 던졌습니다 { \t \t // TODO 방법 스텁을 자동 생성 \t \t this.setExpiration (는 arg0); // TTL 여기에 작동하지 않으며 setExpiration (arg0에서)도 작동하지 않습니다. \t} –
대답과 JMS API를 읽으십시오. setJMSExpiration을 호출 할 수 없으며 아무 일도 일어나지 않을 것입니다. 그냥 작동하지 않습니다. –
코드로 설명하십시오. –