Amqp與RabbitMQ使用


pom:

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-amqp</artifactId>
        </dependency>

配置:

spring.rabbitmq.host=127.0.0.1
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest

Main類,啟動rabbitmq注釋。

@EnableRabbit
public class DemoApplication {}

監控類Service,必須@EnableRabbit與@RabbitListener一起使用。

才可以有其他寫法,也可以指定監控配置等,官網有寫法說明:https://docs.spring.io/spring-amqp/docs/2.0.2.RELEASE/api/org/springframework/amqp/rabbit/annotation/EnableRabbit.html

@Service
public class BookService {

    @RabbitListener(queues = "cw.news")
    public void receive(Book book){
        System.out.println("收到消息:"+book);
    }
}

配置類,解決JSON轉換亂碼問題

@Configuration
public class AmqpConverter {
    @Bean
    public MessageConverter messageConverter(){
        return new Jackson2JsonMessageConverter();
    }
}

往隊列發送與接收消息:

    @Autowired
      RabbitTemplate rabbitTemplate;
public void contextLoads() {
        Map<String,Object> map = new HashMap<>();
        map.put("msg","firstnews");
        map.put("data", Arrays.asList("hello",123,true));
        rabbitTemplate.convertAndSend("exchange-direct","cw.news",map);
    }//發送給交換器XXX,路由key為cw.news,數據為map。

    public void receive(){
        Object obj = rabbitTemplate.receiveAndConvert("cw.news");
        System.out.println(obj.getClass());
        System.out.println(obj);
    }

代碼操作交換機(exchange)、隊列(queues)、綁定(binding)等:

    @Autowired
    AmqpAdmin amqpAdmin;

    public void createExchange(){
        amqpAdmin.declareExchange(new DirectExchange("amqp-exchange"));
    }

值得一提的是,官網有很完整的樣例,還是多語言的。

 

關於Erlang與RabbitMQ的安裝:

一、ErlangRabbitMQ

  1. RabbitMQ的官方安裝目錄是有空格的,需要另起爐灶,不能有帶空格的目錄。
  2. Erlang的命令得在管理員權限的CMD下才有效。
  3. RabbitMQ的版本要跟Erlang適配,官網有列表。
  4. 安裝RabbitMQ的時候,計算機名不能是中文,如果是,改了再重裝(刪除后記得把C盤下的用戶資料也刪掉)。
  5. RabbitMQ裝完后進入sbin目錄,輸入Rabbit MQ's Management Plugin,接着輸入Net stop rabbitmq && net start rabbitmq重啟RabbitMQ目錄,登錄http://localhost:15672,用戶名:guest,密碼:guest

這時候guest都是默認的,可以通過cmd命令進行更改(或者直接在頁面新增用戶)。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM