У меня проблема с получением сообщения в Spring-cloud-stream spring-boot app. Я использую rabbitMq как движок сообщений. Message-продюсер - приложение, не загружающее весну, которое отправляет сообщение с помощью Spring RestTemplate.spring cloud stream не удалось разобрать сообщение отправлено в RabbitMq с помощью Spring RestTemplate
Queue Name: "audit.logging.rest"
Потребитель приложение настройки слушать эту очередь. Это приложение является весенним загрузочным приложением (spring-cloud-stream).
Ниже приведен код интересов потребителей
application.yml
cloud:
stream:
bindings:
restChannel:
binder: rabbit
destination: audit.logging
group: rest
AuditServiceApplication.java
@SpringBootApplication
public class AuditServiceApplication {
@Bean
public ByteArrayMessageConverter byteArrayMessageConverter() {
return new ByteArrayMessageConverter();
}
@Input
@StreamListener(AuditChannelProperties.REST_CHANNEL)
public void receive(AuditTestLogger logger) {
...
}
AuditTestLogger.java
public class AuditTestLogger {
private String applicationName;
public String getApplicationName() {
return applicationName;
}
public void setApplicationName(String applicationName) {
this.applicationName = applicationName;
}
}
Ниже приводится запрос, отправляемый производителем в формате JSON.
{"applicationName" : "AppOne" }
Найдено несколько вопросов: Issue1: То, что я заметил, это ниже метод получения срабатывает только тогда, когда метод параметров упоминается как объект, так как весна-облако-поток не в состоянии разбора сообщение в объект Java POJO.
@Input
@StreamListener(AuditChannelProperties.REST_CHANNEL)
public void receive(AuditTestLogger logger) {
Issue2:
Когда я изменил способ получить объект. Я вижу, что объект имеет тип RMQTextMessage, который не может быть проанализирован. Однако я вижу фактическое сообщение в нем в отношении свойства text.
Я написал ByteArrayMessageConverter, который даже не помог.
Есть ли способ сообщить весеннему потоку облаков, чтобы извлечь сообщение из RMQTextMessage с помощью MessageConverter и получить из него фактическое сообщение.
Заранее спасибо ..
Приложение-производитель имеет существующие интеграции, в которых клиент rabbitMq. Я хотел использовать весенне-облачную часть моего нового проекта. Тем не менее, я попытаюсь использовать AMQP. Спасибо – chmk
Он работал после использования RabbitTemplate в приложении-изготовителе. Спасибо Артем. – chmk
Отлично! Итак, время, чтобы принять ответ: http://stackoverflow.com/help/someone-answers –