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>

  添加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";
    }
}

 浏览器访问触发

客户端收到消息

猜你喜欢

转载自www.cnblogs.com/yongxiangliu123/p/11248884.html