@SendTo не работает в JMS (интеграция ActiveMQ) с Spring Boot - PullRequest
0 голосов
/ 29 октября 2018

У меня странная проблема, я не могу отправить свои сообщения на demoQueue в ActiveMQ, используя только аннотацию @SendTo ("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;
    }
}

Пожалуйста, объясните, я здесь запутался. Спасибо.

1 Ответ

0 голосов
/ 29 октября 2018

Вы не можете использовать аннотацию @SendTo как часть любого метода. Он работает в контексте @JmsListener (или другого слушателя, например @KafkaListener), см. Это сообщение в блоге .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...