繁体   English   中英

@SendTo在Spring Boot的JMS(ActiveMQ集成)中不起作用

[英]@SendTo not working in JMS (ActiveMQ integration) with Spring Boot

我面临的一个奇怪的问题,我不能给我的信息发送到demoQueue只使用@SendTo(“demoQueue”)标注在ActiveMQ中,我都试过之后,我设法送使用消息队列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 )的上下文中工作,请参阅此博客文章

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM