@SendTo无法在带有Spring Boot的JMS(ActiveMQ集成)中工作



我面临一个奇怪的问题,我无法仅使用@SendTo("demoQueue"(注释将消息发送到ActiveMQ中的demoQueue,我尝试过以下操作,我成功地使用JmsTemplate将消息发送给队列,但我也在博客中读到@SendTo将为您执行此操作。

下面是我尝试过的代码,这个版本不起作用。

@Component
public class ProducerTask {
private static final Logger LOG = LoggerFactory.getLogger(ProducerTask.class);
@Scheduled(cron = "0 0/3 * * * *")
@SendTo("demoQueue")
public String pushToQueue() {
String str = "Running scheduled task >> " + ZonedDateTime.now();
LOG.info(str);
return str;
}
}

使用JmsTemplate的版本运行良好。

@Component
public class ProducerTask {
private static final Logger LOG = LoggerFactory.getLogger(ProducerTask.class);
@Autowired
private JmsTemplate jmsTemplate;
@Scheduled(cron = "0 0/3 * * * *")
public String pushToQueue() {
String str = "Running scheduled task >> " + ZonedDateTime.now();
LOG.info(str);
jmsTemplate.setDefaultDestinationName("demoQueue");
jmsTemplate.send(new MessageCreator() {
@Override
public Message createMessage(Session session) throws JMSException {
return session.createTextMessage(str);
}
});
// TODO put the logic for consuming in different bean and inject here and call that method here.
return str;
}
}

请解释一下,我在这里很困惑。谢谢

不能将@SendTo注释用作任何方法的一部分。它在@JmsListener(或另一个侦听器,如@KafkaListener(的上下文中工作,请参阅本文。

最新更新