Ошибка типа содержимого при передаче и чтении XML String Spring Cloud Stream - PullRequest
0 голосов
/ 05 апреля 2019

У меня есть xml

<?xml version = .......
<A>1</A>
<B>2</>
</>

Я пытаюсь преобразовать это в строку и отправить его в качестве полезной нагрузки в другое приложение через Kafka

// Приложение производителя

@EnableBinding(Source.class)

public class Producer {


      @InboundChannelAdapter(value = Source.OUTPUT, poller = @Poller(fixedDelay = "7000", maxMessagesPerPoll = "1"))
        public Message produceMessages() {

           //Converting xml to String here
            BufferedReader br = new BufferedReader(new FileReader(new File(filename)));
            String line;
            StringBuilder sb = new StringBuilder();

            while((line=br.readLine())!= null){
                sb.append(line.trim());

            string1 = sb.toString();

            Message<string> msg1 = MessageBuilder.withPayload(string1).build();

}

App.yml

spring:
  application:
     name: some-app
  cloud:
    stream:
      defaultBinder: kafka
      bindings:
        output:
          destination: someTopic

// Потребитель

@EnableBinding(Interface1.class)
public class ConsumerApp {

    @StreamListener(Interface1.RECEIVE_FROM_SOURCE)
    public void handleMessage(Message message){

        String receivedPayload = message.getPayload().toString();
        logger.info(received payload >>> " +receivedPayload);

        someObject.someMethod(receivedPayload); ///this needs to have just xml string as parameter and throws error

    }
}

Когда я делаю это ..

Я получаю

received payload >>> "{"payload":"<?xmlns....<A>1</A><B>2</B>"}

И это выдает ошибку

java.lang.String cannot be cast to [Ljava.lang.Object;

Как я могу просто получить значение полезной нагрузки, которая является просто строкой?Спасибо.

...