@SendTo Annotation не работает для ActiveMQ

Я пытаюсь отправить JMS-сообщение автономному брокеру ActiveMQ в приложении SpringBoot с помощью аннотации @SendTo, однако выполнение завершается без ошибок / исключений, но сообщение не ставится в очередь. Вместо этого, если я использую JmsTemplate (закомментированный в коде), сообщение ставится в очередь. Требуется ли дополнительная настройка для использования @SendTo. Что я здесь делаю не так?

application.properties

spring.activemq.broker-url= tcp://localhost:61616
spring.activemq.user= admin
spring.activemq.password= admin
spring.activemq.pool.enabled= false

Приложение Spring Boot

@SpringBootApplication
public class MyCustomRouterApplication {
    public static void main(String[] args) throws Exception {
        SpringApplication.run(MyCustomRouterApplication.class, args);
    }
}

Метод обслуживания

@Service
public class NotificationServiceImpl implements NotificationService {

    //@Autowired
    //JmsTemplate jmsTemplate;

    @Override
    @SendTo("inboundSyncQueue")
    public Map<String, Object> enqueueExchangeNotification(ExchangeNotification notification, String tenantId) throws RuntimeException {

        Map<String, Object> jmsMessage = new HashMap<String, Object>();
        jmsMessage.put("tenantId", tenantId);
        jmsMessage.put("source", ExternalNotificationSource.EXCHANGE);
        jmsMessage.put("payload", notification);
        //jmsTemplate.convertAndSend("inboundSyncQueue", notification);
        return jmsMessage;
    }

}

maven pom

<dependencies>
   <dependency>
      <groupId>org.apache.camel</groupId>
      <artifactId>camel-spring-boot-starter</artifactId>
   </dependency>
   <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-data-jpa</artifactId>
   </dependency>
   <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
   </dependency>
   <dependency>
      <groupId>org.hsqldb</groupId>
      <artifactId>hsqldb</artifactId>
      <scope>runtime</scope>
   </dependency>
   <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
   </dependency>
   <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-actuator</artifactId>
   </dependency>
   <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-activemq</artifactId>
   </dependency>
   <!-- Required for ActiveMQ JMS Consumer -->
   <dependency>
      <groupId>org.apache.activemq</groupId>
      <artifactId>activemq-camel</artifactId>
   </dependency>
   <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context-support</artifactId>
   </dependency>
   <!-- Required for Guava In-memory Cache -->
   <dependency>
      <groupId>com.google.guava</groupId>
      <artifactId>guava</artifactId>
      <version>21.0</version>
   </dependency>
   <!-- Required for String Utilities -->
   <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-lang3</artifactId>
      <version>3.7</version>
   </dependency>
   <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-messaging</artifactId>
   </dependency>
</dependencies>
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
0
359
1

Ответы 1

Вместо @sendTo я использовал jmsTemplate у производителя. Ниже приведен метод. jmsTemplate.convertAndSend (destinationQueue, сообщение);

Примечание: это обходной путь.

это то, чем я закончил. Цель использования аннотации - избежать шаблонного кодирования для jmsTemplate и позволить Spring управлять им.

Monish Sen 10.06.2018 14:17

Другие вопросы по теме