невозможно проанализировать мой Json объект, полученный с помощью связывателей в весеннем облачном потоке - PullRequest
0 голосов
/ 29 апреля 2020

У меня проблема с конвертером Json, я отправляю объект Json в rabbitmq с потоком весеннего облака, когда я пытаюсь прослушать этот объект и преобразовать его в java объект.

вот где я получаю объект:


import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.Ebanking.transactionservice.entities.Transaction;
import org.Ebanking.transactionservice.repositories.TransactionRepository;
import org.Ebanking.transactionservice.services.TransactionService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.stream.annotation.EnableBinding;
import org.springframework.cloud.stream.annotation.StreamListener;
import org.springframework.cloud.stream.messaging.Sink;

@EnableBinding(Sink.class)
public class TransactionServiceImpl implements TransactionService {

    @Autowired
    TransactionRepository transactionRepository;


    @Override
    @StreamListener(target = Sink.INPUT)
    public void listen(String payload) throws JsonProcessingException {
        ObjectMapper mapper = new ObjectMapper();
        Transaction transaction = mapper.readValue(payload,Transaction.class);
        transactionRepository.save(transaction);
        System.out.println("Transaction registered Successfully");
    }
}

вот откуда я отправляю объект:

    @StreamListener(target = Processor.INPUT)
    @SendTo(Processor.OUTPUT)
    public String processTransaction(Transaction transaction) throws JsonProcessingException {
        ObjectMapper mapper = new ObjectMapper();
        Long idDebi = transaction.getAccountId();
        Long idCred = transaction.getAccountIdDestination();
        Double amount = transaction.getAmount();
        String str = mapper.writeValueAsString(transaction);
        if (debitAccount(idDebi, amount).equals(true) && creditAccount(idCred, amount).equals(true)) {
            processor.output().send(MessageBuilder.withPayload(str).setHeader("treatedTran","treatment").build());
            return "transaction treated successfully";
        }
        else return "transaction failed";
    } ```

1 Ответ

0 голосов
/ 29 апреля 2020

?

Вы не отправляете объект Transaction; вы просто отправляете строки

public String processTransaction(
        ...
        return "transaction treated successfully";
    }
    else return "transaction failed";
...