@SqsListener с возвращаемым значением вызовет исключение - PullRequest
0 голосов
/ 30 октября 2019

У меня есть метод с @SqsListener, который возвращает строковое значение. Он работал нормально с аннотацией @SendTo (получить сообщение из SQS, а затем переслать возвращенное значение в другой SQS). Теперь возвращаемое значение больше не нужно пересылать, но оно все еще необходимо для другого кода. Я все еще позволяю методу возвращать строковое значение. Также я удаляю аннотацию @SendTo, которая вызывает исключение: java.lang.IllegalStateException: нет обработчика для типа возвращаемого значения: class java.lang.String

Метод:

  @SqsListener(value = "shipment_process")
  //@SendTo("queue") the code works with this annotation
  public String shipmentProcess(@Payload ArchivedNotificationMetadataEntity entity) 

Исключение:

shipments_1                       | java.lang.IllegalStateException: No handler for return value type: class java.lang.String
shipments_1                       |     at org.springframework.messaging.handler.invocation.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:102) ~[spring-messaging-5.0.7.RELEASE.jar!/:5.0.7.RELEASE]
shipments_1                       |     at org.springframework.messaging.handler.invocation.AbstractMethodMessageHandler.handleMatch(AbstractMethodMessageHandler.java:529) ~[spring-messaging-5.0.7.RELEASE.jar!/:5.0.7.RELEASE]
shipments_1                       |     at org.springframework.messaging.handler.invocation.AbstractMethodMessageHandler.handleMessageInternal(AbstractMethodMessageHandler.java:475) ~[spring-messaging-5.0.7.RELEASE.jar!/:5.0.7.RELEASE]
shipments_1                       |     at org.springframework.messaging.handler.invocation.AbstractMethodMessageHandler.handleMessage(AbstractMethodMessageHandler.java:411) ~[spring-messaging-5.0.7.RELEASE.jar!/:5.0.7.RELEASE]
shipments_1                       |     at org.springframework.cloud.aws.messaging.listener.SimpleMessageListenerContainer.executeMessage(SimpleMessageListenerContainer.java:205) ~[spring-cloud-aws-messaging-2.0.1.RELEASE.jar!/:2.0.1.RELEASE]
shipments_1                       |     at org.springframework.cloud.aws.messaging.listener.SimpleMessageListenerContainer$MessageExecutor.run(SimpleMessageListenerContainer.java:342) ~[spring-cloud-aws-messaging-2.0.1.RELEASE.jar!/:2.0.1.RELEASE]
shipments_1                       |     at org.springframework.cloud.aws.messaging.listener.SimpleMessageListenerContainer$SignalExecutingRunnable.run(SimpleMessageListenerContainer.java:397) ~[spring-cloud-aws-messaging-2.0.1.RELEASE.jar!/:2.0.1.RELEASE]
shipments_1                       |     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[?:1.8.0_201]
shipments_1                       |     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ~[?:1.8.0_201]
shipments_1                       |     at java.lang.Thread.run(Thread.java:748) [?:1.8.0_201]

Поэтому мне интересно, разработано ли это специально (возвращаемое значение должно иметь аннотацию @SendTo) или я сделал что-то еще неправильно? Кто-нибудь знает обходной путь для этого случая? Я думаю, что имеет смысл пересылать сообщения только тогда, когда мы захотим, добавив аннотацию @SendTo

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