<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                [TOC] # 定義隊列 ~~~ import org.springframework.amqp.core.Queue; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class RabbitConfig { @Bean public Queue objectQueue() { return new Queue("object"); } } ~~~ # 定義對象 需要實現序列化接口, 因為傳輸對象需要對象的序列化和反序列化 ~~~ import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import java.io.Serializable; @Data @AllArgsConstructor @NoArgsConstructor public class User implements Serializable { private static final long serialVersionUID = 1321L; private Integer id; private String username; } ~~~ # 發送 參數也可以用Object, 自己轉換然后用json序列化. **發送的時候,就發送對象,不要發.toString()或者再來個字符串拼接的,那種序列化不了** ~~~ import com.jdxia.pojo.User; import org.springframework.amqp.core.AmqpTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component public class NeoSender { @Autowired private AmqpTemplate rabbitTemplate; public void send(User user) { String context = user.toString(); System.out.println("Sender1 : " + context); //直接發送對象, 不要 發這種 "字符串" + 對象.toString(); 這樣反序列化解不開 this.rabbitTemplate.convertAndSend("object", user); } } ~~~ # 接收 參數也可以用Object, 自己轉換然后用json反序列化 ~~~ import com.jdxia.pojo.User; import org.springframework.amqp.rabbit.annotation.RabbitHandler; import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.stereotype.Component; @Component @RabbitListener(queues = "object") public class NeoReceiver1 { @RabbitHandler public void process(User user) { System.out.println("Receiver 1: " + user); } } ~~~ # 測試 ~~~ @Autowired private NeoSender neoSender; @Test public void test() throws InterruptedException { User user = new User(); user.setId(11); user.setUsername("hello world"); neoSender.send(user); Thread.sleep(100L); } ~~~ # 自定義序列化方式 用Jackson進行對象的序列化和反序列化 ~~~ package com.jdxia.rabbitmq; import org.springframework.amqp.core.Queue; import org.springframework.amqp.rabbit.config.SimpleRabbitListenerContainerFactory; import org.springframework.amqp.rabbit.connection.ConnectionFactory; import org.springframework.amqp.rabbit.core.RabbitAdmin; import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.amqp.support.converter.ContentTypeDelegatingMessageConverter; import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter; import org.springframework.amqp.support.converter.MessageConverter; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class RabbitConfig { @Bean public RabbitAdmin rabbitTemplate(ConnectionFactory connectionFactory) { return new RabbitAdmin(connectionFactory); } @Bean public RabbitTemplate rabbitTemplate(ConnectionFactory connectionFactory, MessageConverter messageConverter) { RabbitTemplate template = new RabbitTemplate(connectionFactory); template.setMessageConverter(messageConverter); return template; } @Bean public SimpleRabbitListenerContainerFactory rabbitListenerContainerFactory(ConnectionFactory connectionFactory, MessageConverter messageConverter) { SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory(); factory.setConnectionFactory(connectionFactory); //指定Json轉換器 factory.setMessageConverter(messageConverter); return factory; } @Bean public MessageConverter messageConverter() { return new ContentTypeDelegatingMessageConverter(new Jackson2JsonMessageConverter()); } } ~~~ 消息隊列里面存儲的是json ~~~ {"id":11,"username":"hello world"} ~~~ # 注意 出現這個 因為你生產者傳過去的實體類對象需要實現序列化 implements Serializable。 如果還是一樣的錯,你就得去RabbitMQ客戶端上的隊列消息先刪除,因為那些隊列消息還是原先的錯誤的消息。你再重新開程序,就沒問題了。 還有傳遞的時候,直接傳對象,不要 傳難以序列化的, 導致消費者無法序列化 ~~~ 2019-07-30 11:25:05.686 ?WARN 23988 --- [cTaskExecutor-2] s.a.r.l.ConditionalRejectingErrorHandler : Execution of Rabbit message listener failed. org.springframework.amqp.rabbit.listener.exception.ListenerExecutionFailedException: Listener threw exception ~~~
                  <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>

                              哎呀哎呀视频在线观看