spring-cloud-stream spring-boot app에 메시지를받는 데 문제가 있습니다. 메시지 엔진으로 rabbitMq를 사용하고 있습니다. Message Producer는 Spring RestTemplate을 사용하여 메시지를 전송하는 비 스프링 부팅 응용 프로그램입니다. Spring Cloud Stream은 Spring RestTemplate을 사용하여 RabbitMq에 게시 된 메시지를 구문 분석 할 수 없습니다.
대기열 이름
는 "audit.logging.rest"소비자 응용 프로그램은 큐를 듣고 설정입니다. 이 응용 프로그램은 spring-boot app (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입니다아래는 제작자 앱에서 JSON 형식으로 전송 된 요청입니다.
{"applicationName" : "AppOne" }
발견 된 문제의 몇 : Issue1 : 봄 - 클라우드 스트림이 구문 분석 할 수 없습니다로, 메소드 매개 변수가 객체로 언급 한 경우에만 아래의 방법은 트리거지고 내가 눈치 무엇 메시지를 Java POJO 오브젝트에 추가하십시오.
@Input
@StreamListener(AuditChannelProperties.REST_CHANNEL)
public void receive(AuditTestLogger logger) {
Issue2 : 나는 개체를받을 수있는 방법을 변경
. 개체를 구문 분석 할 수없는 RMQTextMessage 형식의 참조하십시오. 그러나 텍스트 속성에 대한 실제 게시 된 메시지를 볼 수 있습니다.
필자도 도움이되지 않은 ByteArrayMessageConverter를 작성했습니다.
스프링 클라우드 스트림에 MessageConverter를 사용하여 RMQTextMessage에서 메시지를 추출하고 실제 메시지를 빼낼 수있는 방법이 있습니까? 사전에
감사합니다 ..
생산자 응용 프로그램에는 rabbitMq 클라이언트가 기존의 통합이 있습니다. 나는 새로운 프로젝트의 봄 구름 부분을 사용하고 싶었다. 그러나 AMQP를 사용해 보겠습니다. 감사합니다 – chmk
그것은 제작자 응용 프로그램에서 RabbitTemplate을 사용한 후에 작동했습니다. Artem에 감사드립니다. – chmk
좋아요! 그래서 답변을 수락 할 시간 : http://stackoverflow.com/help/someone-answers –