首页 > 解决方案 > 在服务调用java spring boot中使用rest模板发送和接收字节数组

问题描述

我想使用 restTemplate 将从 kafka 主题接收到的消息发送到不同的服务。消息可以是任何类型,这就是为什么我想将有效负载转换为字节数组并发送到下一个服务并期望下一个服务将字节数组反序列化为所需的格式。

我在两个部分面临挑战 -

这是下面的示例 -

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"

        
    }

标签: javaspringspring-bootrestmicroservices

解决方案


推荐阅读