spring-boot中使用rest模板发送和接收字节数组

gxwragnw  于 2021-07-23  发布在  Java
关注(0)|答案(0)|浏览(323)

我想使用restemplate将从kafka主题接收到的消息发送到其他服务。消息可以是任何类型,这就是为什么我要将有效负载转换为字节数组并发送到下一个服务,并期望下一个服务将字节数组反序列化为所需的格式。
我面临着两方面的挑战-
当我尝试使用restemplate发送字节数组时,应该设置什么内容类型?
我尝试使用octate流,但是当我在第二个服务中接收字节数组时,它无法转换回xml格式的字符串(我正在测试)
下面是一个例子-
kafkatopiclistener.java文件

@KafkaListener(topics = "test-topic", groupId = "group-id", containerFactory = "kafkaListenerContainerFactory")
    public void listen(ConsumerRecord<String, byte[]> cr,
            @Payload byte[] payload) {

        System.out.println("KafkaTopicListener.listen : payload ::"+payload.toString());

        String s = new String(payload);     
        System.out.println("KafkaTopicListener.listen : payload ::"+s); //getting proper string for an xml formatted in string that i posted on kafka

        HttpHeaders headers = new HttpHeaders();

        headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
        headers.setAccept(Arrays.asList(MediaType.APPLICATION_OCTET_STREAM));

        HttpEntity<Object> entity = new HttpEntity<>(payload, headers);

        restTemplate.postForLocation(nextSerivceURL, entity);

    }

nextservicecontroller.java

@RequestMapping(value = "/testByteArray", method = RequestMethod.POST)
    public void testByteArray(@RequestBody byte[] payload) throws IOException, ClassNotFoundException {

        //String s = new String(payload); 

        //System.out.println("NextServiceController.testByteArray::"+decoded.toString());
        String s = new String(payload); 
        System.out.println("NextServiceController.testByteArray String::"+s);

        // getting only a encoded string like NextserivceController.testByteArray //String::"ICAgIDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQogICAgPGx2Yl9zeXN0ZW0geG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNja//GVtYS1pbnN0YW5jZSIgeHNpOm5vTmFtZXNwYWNlU2NoZW1hTG9jYXRpb249InNhbXBsZS54c2QiPg0KICAgIDxsaW5lIGlkPSIxIj4NCiAgICANCiAgICAgICAgPHR5cGU+dHlwZTwvdHl//wZT4NCiAgICAgICAgPHN0YXJ0X3RpbWVfb3BlcmF0aW9uPjEyOjA6MDA8L3N0YXJ0X3RpbWVfb3BlcmF0aW9uPg0KICAgICAgICA8ZW5kX3RpbWVfb3BlcmF0aW9uPjEyOjAwOjAwPC9lb//mRfdGltZV9vcGVyYXRpb24+DQogICAgICAgIDxjb3VudF92ZWhpY2xlcz4wPC9jb3VudF92ZWhpY2xlcz4NCiAgICAgICAgPG1hcD5tYXA8L21hcD4NCiAgICAgICAgPHN0YXJ0X3N0YXR//pb24gaWQ9IjEiPg0KICAgICAgICA8bmFtZT5uYW1lPC9uYW1lPg0KICAgICAgICA8L3N0YXJ0X3N0YXRpb24+DQogICAgICAgIDxlbmRfc3RhdGlvbiBpZD0iMSI+DQogICAgICAgIDxuY//W1lPm5hbWU8L25hbWU+DQogICAgICAgIDwvZW5kX3N0YXRpb24+DQogICAgICAgIDxpbnRlcm1lZGlhdGVfc3RhdGlvbnMgaWQ9IjEiPg0KICAgICAgICA8bmFtZT5uYW1lPC9uYW1lPg0//KICAgICAgICA8L2ludGVybWVkaWF0ZV9zdGF0aW9ucz4NCiAgICAgICAgPHZlaGljbGVzX2xpbmUgaWQ9IjEiPg0KICAgICAgICA8bmFtZT5uYW1lPC9uYW1lPg0KICAgICAgICA8Y2FwY//WNpdHk+MDwvY2FwYWNpdHk+DQogICAgICAgIDwvdmVoaWNsZXNfbGluZT4NCiAgICA8L2xpbmU+DQogICAgPC9sdmJfc3lzdGVtPg0K"

    }

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题