У меня есть поток
http | customprocessor
код для пользовательского процессора (UsageProcessor) выглядит следующим образом
public class UsageProcessor {
private double ratePerSecond = 0.1;
private double ratePerMB = 0.05;
@Transformer(inputChannel = Processor.INPUT, outputChannel = Processor.OUTPUT)
public UsageCostDetail processUsageCost(UsageDetail usageDetail) {
UsageCostDetail usageCostDetail = new UsageCostDetail();
usageCostDetail.setUserId(usageDetail.getUserId());
usageCostDetail.setCallCost(usageDetail.getDuration() * this.ratePerSecond);
usageCostDetail.setDataCost(usageDetail.getData() * this.ratePerMB);
return usageCostDetail;
}
}
при отправке ниже JSON запроса в поток из POSTMAN
{"userId":"user1", "duration":200, "data":"3000"}
получить ошибку ниже в журнале процессора использования
"Caused by: org.springframework.expression.spel.SpelEvaluationException: EL1004E: Method call: Method processUsageCost(byte[]) cannot be found on type"
, но тот же процессор с потоком ниже работает нормально, когда исходные данные автоматически генерируются с помощью UsageDetailSender
custom source | custom processor
where custom source is below "UsageDetailSender" and custom processor is above "UsageProcessor"
@EnableScheduling
@EnableBinding(Source.class)
public class UsageDetailSender {
@Autowired
private Source source;
private String[] users = {"user1", "user2", "user3", "user4", "user5"};
@Scheduled(fixedDelay = 1000)
public void sendEvents() {
UsageDetail usageDetail = new UsageDetail();
usageDetail.setUserId(this.users[new Random().nextInt(5)]);
usageDetail.setDuration(new Random().nextInt(300));
usageDetail.setData(new Random().nextInt(700));
//message emitted to kafka output channel called output
this.source.output().send(MessageBuilder.withPayload(usageDetail).build());
}
}
Что необходимо сделать, чтобы данные, полученные из источника HTTP, были успешно обработаны пользовательским процессором без
"Caused by: org.springframework.expression.spel.SpelEvaluationException: EL1004E: Method call: Method processUsageCost(byte[]) cannot be found on type"