У меня есть 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;
Как я могу просто получить значение полезной нагрузки, которая является просто строкой?Спасибо.