zoukankan      html  css  js  c++  java
  • RabbitMQ使用

    下载RabbitMQ镜像

    docker pull hub.c.163.com/library/rabbitmq:3-management
     
    docker run -d -p 5672:5672 -p 15672:15672 --name myrabbitmq fb11f4e0a6b6
     
    启动成功后访问:192.168.2.103:15672
     

    进入界面后,添加exchanges和queues,然后进行绑定

    Spring Boot与RabbitMQ整合

    1、引入 spring-boot-starter-amqp

    <dependency>
    	<groupId>org.springframework.boot</groupId>
    	<artifactId>spring-boot-starter-amqp</artifactId>
    </dependency>  
     
    2. application.yml配置

    * 自动配置
    * RabbitAutoConfiguration
    * 又自动配置了连接工厂ConnectionFactory;
    * RabbitProperties 封装了 RabbitMQ的配置:查看默认值,

    private String host = "localhost";
    private int port = 5672;
    private String username = "guest";
    private String password = "guest";

    * RabbitTemplate :给RabbitMQ发送和接受消息;

    3. 测试RabbitMQ
         /**
    	 * 1、单播(点对点)
    	 */
    	@Test
    	public void contextLoads() {
    		//Message需要自己构造一个;定义消息体内容和消息头
    		//rabbitTemplate.send(exchage,routeKey,message);
    
    		//object默认当成消息体,只需要传入要发送的对象,自动序列化发送给rabbitmq;
    		//rabbitTemplate.convertAndSend(exchage,routeKey,object);
    		Map<String,Object> map = new HashMap<>();
    		map.put("msg","这是第一个消息");
    		map.put("data", Arrays.asList("helloworld",123,true));
    		//对象被默认序列化以后发送出去
    		rabbitTemplate.convertAndSend("exchange.direct","atguigu.news",new Book("西游记","吴承恩"));
    
    	}
    
    	//接受数据,如何将数据自动的转为json发送出去
    	@Test
    	public void receive(){
    		Object o = rabbitTemplate.receiveAndConvert("atguigu.news");
    		System.out.println(o.getClass());
    		System.out.println(o);
    	}
    
    	/**
    	 * 广播
    	 */
    	@Test
    	public void sendMsg(){
    		rabbitTemplate.convertAndSend("exchange.fanout","",new Book("红楼梦","曹雪芹"));
    	}
    

      json序列化配置(简单的配置如下)

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

      

    4、 监听测试(service层)@EnableRabbit + @RabbitListener 监听消息队列的内容
    @Service
    public class BookService {
    
        @RabbitListener(queues = "atguigu.news")
        public void receive(Book book){
            System.out.println("收到消息:"+book);
        }
    
        @RabbitListener(queues = "atguigu")
        public void receive02(Message message){
            System.out.println(message.getBody());
            System.out.println(message.getMessageProperties());
        }
    }
    

     

    5、AmqpAdmin : RabbitMQ系统管理功能组件;
     AmqpAdmin:创建和删除 Queue,Exchange,Binding

    @Autowired
    	AmqpAdmin amqpAdmin;
    	@Test
    	public void createExchange(){
    
    		//创建exchange
    		amqpAdmin.declareExchange(new DirectExchange("amqpadmin.exchange"));
    		//创建queue
    		amqpAdmin.declareQueue(new Queue("amqpadmin.queue",true));
    		//创建绑定规则
    		amqpAdmin.declareBinding(new Binding("amqpadmin.queue", Binding.DestinationType.QUEUE,"amqpadmin.exchange","amqp.haha",null));
    	}
    

      

  • 相关阅读:
    Android开发 ViewConfiguration View的配置信息类
    Android 开发 倒计时功能 转载
    Android 开发 关于7.0 FileUriExposedException异常 详解
    Android 开发 实现文本搜索功能
    Android 开发 Activity里获取View的宽度和高度 转载
    Android 开发 存储目录的详解
    Android 开发 Fresco框架点击小图显示全屏大图实现 ZoomableDraweeView
    Android 开发 将window变暗
    Android 开发 DisplayMetrics获取Android设备的屏幕高宽与其他信息
    Android 开发 DP、PX、SP转换详解
  • 原文地址:https://www.cnblogs.com/huoxiansudi/p/11894509.html
Copyright © 2011-2022 走看看