-1
我想在'x'秒後在任何時間發送一個't'消息,接收器會收到這個消息。這樣做在spring啓動時在activeMQ中延遲傳送消息
,我已經寫了接收器瞬間。沒有任何延遲接收的發送者代碼
@Autowired
private JmsTemplate jmsTemplate;
private Queue queue = new ActiveMQQueue("topicName");
public void show(String message) {
try {
System.out.println("Sending message " + message);
jmsTemplate.convertAndSend(queue, message, new MessagePostProcessor() {
@Override
public Message postProcessMessage(Message message) throws JMSException {
System.out.println("postProcessMessage executed ");
message.setLongProperty(ScheduledMessage.AMQ_SCHEDULED_DELAY, 3 * 60 * 1000);
System.out.println("long time " + message
.getLongProperty(ScheduledMessage.AMQ_SCHEDULED_DELAY));
return message;
}
});
System.out.println("Sending done " + message + " at " + System.currentTimeMillis());
} catch (Exception er) {
er.printStackTrace();
}
}
和Reciever代碼
@JmsListener(destination = "topicName")
public void reciever(String message) {
System.out.println("receiving message " + message + " at " + System.currentTimeMillis());
}
但是消息。
輸出是
發送消息,這是一個消息
postProcessMessage執行長 時間180000
接收到消息,這是一個消息在1514391984964
發送已完成,這是一個消息在1514391984970
配置文件是
@Bean
JmsTemplate createJMSTemplate(ConnectionFactory connectionFactory) {
JmsTemplate jmsTemplate = new JmsTemplate();
jmsTemplate.setConnectionFactory(connectionFactory);
return jmsTemplate;
}
@Bean
ConnectionFactory myActiveMQConnectionFactory() {
RedeliveryPolicy redeliveryPolicy = new RedeliveryPolicy();
redeliveryPolicy.setBackOffMultiplier(1);
redeliveryPolicy.setUseExponentialBackOff(false);
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");
connectionFactory.setRedeliveryPolicy(redeliveryPolicy);
NetworkConnector networkConnector = new DiscoveryNetworkConnector();
networkConnector.setConsumerTTL(2);
return connectionFactory;
}
加入schedulerSupport是否已打開在代理調度的支持? –