MQ,消息队列,本质是个队列,先入先出,只不过队列中存放的内容是message而已,用于不同进程和线程之间通信。

作用:解耦和提高并发能力。

AMQP:消息队列协议。

RabbitMQ入门:

1、安装

2、添加用户

    -超级管理员,可登陆管理控制台,可查看所有的信息,并且可以对用户,策略进行操作。

    -监控者,可登陆管理控制台,同时可以查看rabbitmq节点的相关信息

    -策略制定者,可登陆管理控制台,同时可以对policy进行管理,但无法查看节点的相关信息

    -普通管理者,仅可登陆管理控制台,无法看见节点信息,也无法对策略进行管理

    -其他,无法登陆管理控制台,通常就是普通的生产者和消费者

3、创建Virtual Hosts

五种队列:

1、简单队列,一个消息的生产者,一个消息的消费者,一个队列

2、work模式,一个消息的生产者,多个消息的消费者,一个队列

3、订阅模式,一个消息的生产者,一个交换机,多个消息的消费者和对应的队列

4、路由模式,相比订阅模式增加了routing key

5、主题模式,相比路由模式,将routing key和某模式进行匹配,符号#匹配一个或多个词,符号*匹配不多不少一个词

Spring AMQP

Spring对AMQP做了支持,目前只是做了RabbitMQ的实现。

入门代码:

1、导入坐标依赖

<dependencies>

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

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

2、创建启动类

@SpringBootApplication
public class AMQPApplication {
    public static void main(String[] args) {
        SpringApplication.run(AMQPApplication.class);
    }
}

3、创建消费者

@Component
public class Listener {

    @RabbitListener(queues = "simple_queue")
    public void listen(String msg){
        System.out.println(msg);
    }
}

4、创建生产者

@RunWith(SpringRunner.class)
@SpringBootTest(classes = AMQPApplication.class)
public class MqDemo {

    @Autowired
    private AmqpTemplate amqpTemplate;

    @Test
    public void testsend() throws InterruptedException{
        String msg = "hello Spring amqp";
        this.amqpTemplate.convertAndSend("simple_queue",msg);
    }
}
09-25 11:13