<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                [TOC] # ContentTypeDelegatingMessageConverter詳解 ## 生產端 ~~~java public class Application { public static void sendOrder( RabbitTemplate rabbitTemplate) throws Exception{ Order order = new Order(); order.setId(1); order.setUserId(1000); order.setAmout(88d); order.setTime(LocalDateTime.now().toString()); ObjectMapper mapper = new ObjectMapper(); String json = mapper.writeValueAsString(order); System.out.println(json); MessageProperties messageProperties = new MessageProperties(); messageProperties.setContentType("application/json"); messageProperties.getHeaders().put("__TypeId__","order"); Message message = new Message(json.getBytes(),messageProperties); rabbitTemplate.send("","zhihao.miao.order",message); } public static void sendUser( RabbitTemplate rabbitTemplate) throws Exception{ User user = new User(); user.setUserId(1000); user.setAge(50); user.setUsername("zhihao.miao"); user.setPassword("123343"); ObjectMapper mapper = new ObjectMapper(); String json = mapper.writeValueAsString(user); System.out.println(json); MessageProperties messageProperties = new MessageProperties(); messageProperties.setContentType("application/json"); messageProperties.getHeaders().put("__TypeId__","user"); Message message = new Message(json.getBytes(),messageProperties); rabbitTemplate.send("","zhihao.miao.order",message); } public static void sendOrderList(RabbitTemplate rabbitTemplate) throws Exception{ Order order = new Order(); order.setId(1); order.setUserId(1000); order.setAmout(88d); order.setTime(LocalDateTime.now().toString()); Order order2 = new Order(); order2.setId(2); order2.setUserId(2000); order2.setAmout(99d); order2.setTime(LocalDateTime.now().toString()); List<Order> orderList = Arrays.asList(order,order2); ObjectMapper mapper = new ObjectMapper(); String json = mapper.writeValueAsString(orderList); MessageProperties messageProperties = new MessageProperties(); messageProperties.setContentType("application/json"); messageProperties.getHeaders().put("__TypeId__","java.util.List"); messageProperties.getHeaders().put("__ContentTypeId__","order"); Message message = new Message(json.getBytes(),messageProperties); rabbitTemplate.send("","zhihao.miao.order",message); } public static void sendOrderMap(RabbitTemplate rabbitTemplate) throws Exception{ Order order = new Order(); order.setId(1); order.setUserId(1000); order.setAmout(88d); order.setTime(LocalDateTime.now().toString()); Order order2 = new Order(); order2.setId(2); order2.setUserId(2000); order2.setAmout(99d); order2.setTime(LocalDateTime.now().toString()); Map<String,Object> orderMaps = new HashMap<>(); orderMaps.put("10",order); orderMaps.put("20",order2); ObjectMapper mapper = new ObjectMapper(); String json = mapper.writeValueAsString(orderMaps); MessageProperties messageProperties = new MessageProperties(); messageProperties.setContentType("application/json"); messageProperties.getHeaders().put("__TypeId__","java.util.Map"); messageProperties.getHeaders().put("__KeyTypeId__","java.lang.String"); messageProperties.getHeaders().put("__ContentTypeId__","order"); Message message = new Message(json.getBytes(),messageProperties); rabbitTemplate.send("","zhihao.miao.order",message); } public static void sendJepg(RabbitTemplate rabbitTemplate) throws Exception{ byte[] body = Files.readAllBytes(Paths.get("/Users/naeshihiroshi/Desktop/file/file","aisi.jpeg")); MessageProperties messageProperties = new MessageProperties(); messageProperties.setContentType("image/jepg"); Message message = new Message(body,messageProperties); rabbitTemplate.send("","zhihao.miao.order",message); } public static void sendJson( RabbitTemplate rabbitTemplate) throws Exception{ MessageProperties messageProperties = new MessageProperties(); messageProperties.setContentType("text/plain"); Message message = new Message("hello".getBytes(),messageProperties); rabbitTemplate.send("","zhihao.miao.order",message); } public static void main(String[] args) throws Exception{ AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(com.zhihao.miao.day03.Application.class); RabbitTemplate rabbitTemplate = context.getBean(RabbitTemplate.class); System.out.println(rabbitTemplate); //sendOrder(rabbitTemplate); //sendUser(rabbitTemplate); //sendOrderList(rabbitTemplate); //sendOrderMap(rabbitTemplate); sendJepg(rabbitTemplate); context.close(); } } ~~~ ## 消費端 ~~~java @Configuration public class MQConfig { @Bean public ConnectionFactory connectionFactory(){ CachingConnectionFactory factory = new CachingConnectionFactory(); factory.setUri("amqp://zhihao.miao:123456@192.168.1.131:5672"); return factory; } @Bean public RabbitAdmin rabbitAdmin(ConnectionFactory connectionFactory){ RabbitAdmin rabbitAdmin = new RabbitAdmin(connectionFactory); return rabbitAdmin; } @Bean public RabbitTemplate rabbitTemplate(ConnectionFactory connectionFactory){ RabbitTemplate rabbitTemplate = new RabbitTemplate(connectionFactory); return rabbitTemplate; } @Bean public SimpleMessageListenerContainer messageListenerContainer(ConnectionFactory connectionFactory){ SimpleMessageListenerContainer container = new SimpleMessageListenerContainer(); container.setConnectionFactory(connectionFactory); container.setQueueNames("zhihao.miao.order"); MessageListenerAdapter adapter = new MessageListenerAdapter(new MessageHandler()); //指定Json轉換器 Jackson2JsonMessageConverter jackson2JsonMessageConverter =new Jackson2JsonMessageConverter(); Map<String, Class<?>> idClassMapping = new HashMap<>(); idClassMapping.put("order",Order.class); idClassMapping.put("user",User.class); DefaultJackson2JavaTypeMapper jackson2JavaTypeMapper = new DefaultJackson2JavaTypeMapper(); jackson2JavaTypeMapper.setIdClassMapping(idClassMapping); jackson2JsonMessageConverter.setJavaTypeMapper(jackson2JavaTypeMapper); adapter.setMessageConverter(jackson2JsonMessageConverter); TextMessageConverter textMessageConverter = new TextMessageConverter(); ContentTypeDelegatingMessageConverter contentTypeDelegatingMessageConverter = new ContentTypeDelegatingMessageConverter(); contentTypeDelegatingMessageConverter.addDelegate("text",textMessageConverter); contentTypeDelegatingMessageConverter.addDelegate("html/text",textMessageConverter); contentTypeDelegatingMessageConverter.addDelegate("xml/text",textMessageConverter); contentTypeDelegatingMessageConverter.addDelegate("text/plain",textMessageConverter); contentTypeDelegatingMessageConverter.addDelegate("json",jackson2JsonMessageConverter); contentTypeDelegatingMessageConverter.addDelegate("application/json",jackson2JsonMessageConverter); contentTypeDelegatingMessageConverter.addDelegate("image/jpg",new JPGMessageConverter()); contentTypeDelegatingMessageConverter.addDelegate("image/jepg",new JPGMessageConverter()); contentTypeDelegatingMessageConverter.addDelegate("image/png",new JPGMessageConverter()); adapter.setMessageConverter(contentTypeDelegatingMessageConverter); //設置處理器的消費消息的默認方法 adapter.setDefaultListenerMethod("onMessage"); container.setMessageListener(adapter); return container; } } ~~~ ## 指定的TextMessageConverter消息轉換器 ~~~java public class TextMessageConverter implements MessageConverter { @Override public Message toMessage(Object object, MessageProperties messageProperties) throws MessageConversionException { System.out.println("=======toMessage========="); return new Message(object.toString().getBytes(),messageProperties); } @Override public Object fromMessage(Message message) throws MessageConversionException { System.out.println("=======fromMessage========="); return new String(message.getBody()); } } ~~~ ## 指定的JPGMessageConverter消息轉換器 ~~~java public class JPGMessageConverter implements MessageConverter{ @Override public Message toMessage(Object object, MessageProperties messageProperties) throws MessageConversionException { return null; } @Override public Object fromMessage(Message message) throws MessageConversionException { System.out.println("====JPGMessageConverter===="); byte[] body = message.getBody(); String fileName = UUID.randomUUID().toString(); String path = "/Users/naeshihiroshi/Desktop/file/"+fileName+".jpg"; File file = new File(path); try{ Files.copy(new ByteArrayInputStream(body),file.toPath()); }catch (IOException e){ e.printStackTrace(); } return file; } } ~~~ ## 客戶端消息處理器 ~~~ public class MessageHandler { public void onMessage(byte[] message){ System.out.println("---------onMessage----byte-------------"); System.out.println(new String(message)); } public void onMessage(String message){ System.out.println("---------onMessage---String-------------"); System.out.println(message); } public void onMessage(Order order){ System.out.println("---------onMessage---Order-------------"); System.out.println(order); } public void onMessage(User user){ System.out.println("---------onMessage---user-------------"); System.out.println(user); } public void onMessage(List<Order> orders){ System.out.println("---------onMessage---List<Order>-------------"); orders.stream().forEach(order -> System.out.println(order)); } public void onMessage(Map<String,Object> orderMaps){ System.out.println("-------onMessage---Map<String,Object>------------"); orderMaps.keySet().forEach(key -> System.out.println(orderMaps.get(key))); } public void onMessage(File message){ System.out.println("-------onMessage---File message------------"); System.out.println(message.getName()); } } ~~~ ## 服務器端應用類 ~~~java @ComponentScan public class Application { public static void main(String[] args) throws Exception{ AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(Application.class); System.out.println("===start up ing======"); TimeUnit.SECONDS.sleep(60); context.close(); } } ~~~ ## 結論 * ContentTypeDelegatingMessageConverter是一個代理的MessageConverter。 * ContentTypeDelegatingMessageConverter本身不做消息轉換的具體動作,而是將消息轉換委托給具體的MessageConverter。我們可以設置COntentType和MessageConverter的映射關系。 * ContentTypeDelegatingMessageConverter還有一個默認的MessageConverter,也就是說當根據ContentType沒有找到映射的MessageConverter的時候,就會使用默認的MessageConverter。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看