카프 카에게 메시지를 보내려고하고 있으며 카프 카에서 Spring 클라우드 스트림을 사용하여 동일한 메시지를 사용하려고합니다. Postman을 사용하여 JSON String { "acctNo": "32432", "tn": "3234"}을 제작자의 나머지 컨트롤러로 보냅니다. 내가 JSON의 ParserException을 얻고있다 :알 수없는 토큰 'Ã'¢ : expecting ('true', 'false'또는 'null')
com.fasterxml.jackson.core.JsonParseException을 인식 할 수없는 토큰을 'ÿ'기다리고 있었다 ('참', '거짓'또는 '널')에서 [출처 : [B @ 776e03af; com.fasterxml.jackson.core.JsonParser._constructError (JsonParser.java:1581) ~ [jackson-core-2.6.5.jar : 2.6.5] (com.fasterxml)에 있습니다. jackson.core.base.ParserMinimalBase._reportError (ParserMinimalBase.java:533) ~ [jackson-core-2.6.5.jar : 2.6.5] at com.fasterxml.jackson.core.json.UTF8StreamJsonParser._reportInvalidToken (UTF8StreamJsonParser. java : 3451) ~ [jackson-core-2.6.5.jar : 2.6.5] com.fasterxml.jackson.core.json.UTF8StreamJsonParser._handleUnexpectedValue (UTF8StreamJsonParser.java:2610) ~ [jackson-core-2.6. 5.jar : 2.6.5] com.fasterxml.jackson.core.json.UTF8StreamJsonParser에서
내 코드는 다음과 같다 :
프로듀서 응용 프로그램 YAML
봄 : 클라우드 : 스트림 : 바인딩 : activationMsgQueue : 대상 : 시험 의 contentType : 응용 프로그램/JSON
프로듀서 나머지 컨트롤러 :
@RestController
@RequestMapping ("/ ActivationQueueService") 공개 클래스 ActivationQueueController {
,451,515,private static final Logger LOGGER = LoggerFactory
.getLogger(ActivationQueueController.class);
@Autowired
SpringCloudStreamClient producer;
@InitBinder
protected void initBinder(WebDataBinder binder) {
binder.setValidator(new ActivationDataInfoValidator());
}
@RequestMapping(method = RequestMethod.POST, value = "/sendMessage", headers = "Accept=application/json", produces = "application/json")
public void sendMessage(@RequestBody @Valid ActivationDataInfo message)
throws JsonProcessingException {
LOGGER.debug("Activation Data Request Recieved : " + message.toString());
if (message != null) {
ObjectMapper mapper = new ObjectMapper();
producer.sendMessagetoKafka(message);
LOGGER.info("Activation Data Request sent to Kafka : " + message);
}
}
생산자 코드 :
@Service
@EnableBinding (MessageChannels.class) 공용 클래스 SpringCloudStreamClient {
private static final Logger LOGGER = LoggerFactory
.getLogger(SpringCloudStreamClient.class);
@Autowired MessageChannels msgChannel;
public Object sendMessagetoKafka(ActivationDataInfo msg){
LOGGER.info("Sending Message : " + msg);
msgChannel.save().send(MessageBuilder.withPayload(msg).build());
return new String("Success");
}
}
소비자 응용 프로그램 YAML :
스프링 : 구름 : 스트림 : 바인딩 : 입력 : 콘텐츠 유형 : application/x-java-object; type = com.comcast.activation.message.vo. 대상 ActivationDataInfo : 시험 그룹 : prac 소비자 : headerMode : 원시 enableDlq : 사실 resetOffsets : 사실 startOffset : 최신
소비자 코드 :
@EnableBinding(Sink.class)
공용 클래스 LogSink {
private static Logger logger = LoggerFactory.getLogger(LogSink.class);
@ServiceActivator(inputChannel = Sink.INPUT)
public void loggerSink(ActivationDataInfo payload) throws Exception {
logger.info("Received: " + payload.getAcctNo());
}
}
012 3,516,도메인 클래스이 원인이 무엇
public class ActivationDataInfo {
private String acctNo;
private String tn;
public String getAcctNo() {
return acctNo;
}
public void setAcctNo(String acctNo) {
this.acctNo = acctNo;
}
public String getTn() {
return tn;
}
public void setTn(String tn) {
this.tn = tn;
}
? 도와주세요.
그게 문제를 해결했습니다. 고마워요, 마리우스. 대단히 감사합니다. –
여러분을 환영합니다! –