rabbitMq 消息队列(一)

安装rabbitMq (docker 安装方式)

docker search rabbitmq   ---搜索rabbitmq的镜像

docker pull rabbitmq:3.7.7-management    ---拉取镜像

docker run -d --name rabbitmq3.7.7 -p 5672:5672 -p 15672:15672 2888deb59dfc   --启动容器

完成安装后可访问ip:15672 进入web管理端    初始账号 guest  密码guest  (也可在启动命令上参数指定 -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin)

新建项目中使用的用户以及虚拟主机 

点击admin用户  添加虚拟主机 / 

编写程序测试

新建spring boot 工程  添加 rabbitmq依赖 

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

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
 </dependencies>  

配置文件

spring.rabbitmq.username=admin
spring.rabbitmq.password=admin
spring.rabbitmq.host=39.96.77.182
spring.rabbitmq.port=5672
spring.rabbitmq.virtual-host=/

server.port=8085

添加mq配置类

@Configuration
public class RabbitMQConfig {
    /**
     * 创建交换机
     * @return
     */
    @Bean
    public FanoutExchange fanoutExchange(){
        return new FanoutExchange("my_exchange");
    }

    /**
     * 创建交换队列
     * @return
     */
    @Bean
    public Queue autoDeleteQueue() {
        return new Queue("my_queue", true, false, true, null);
    }

    /**
     * 进行交换机和队列绑定
     * @param fanoutExchange 交换机
     * @param autoDeleteQueue 队列
     * @return
     */
    @Bean
    public Binding binding(FanoutExchange fanoutExchange, Queue autoDeleteQueue) {
        return BindingBuilder.bind(autoDeleteQueue).to(fanoutExchange);
    }

}

 客户端监听类

@Component
public class ConsumerListener {
    @RabbitListener(queues = "my_queue")
    public void reciveMessage(Message message){
        String msg=new String(message.getBody());
        System.out.println(msg);
    }
}

 启动项目后查看web端

已经完成交换机创建和绑定  使用管理端发送消息  查看客户端监听结果

 

 结果

 

程序中发送消息

@RestController
public class ProviderController {
    @Autowired
    private RabbitTemplate rabbitTemplate;

    @GetMapping("sendMessage")
    public String sendMessage(){
        rabbitTemplate.convertAndSend("my_exchange","","我是消息提供者 发送了一条消息");
        return "success";
    }
}

 浏览器访问触发

客户端收到消息

 

posted @ 2019-07-26 10:50  农夫与蛇丶  阅读(191)  评论(0)    收藏  举报