美文网首页
消息中间件介绍 RabbitMq Docker上安装

消息中间件介绍 RabbitMq Docker上安装

作者: 神豪VS勇士赢 | 来源:发表于2019-03-12 12:20 被阅读0次

    消息队列中间件简介

    image.png

    什么是rabbitMq

    image.png
    image.png
    image.png

    架构图

    image.png

    主要概念

    image.png
    image.png

    Docker下安装

    下载镜像

    image.png

    创建容器

    image.png
    image.png

    打开网址: 进入 可以 看到下面的图片

    image.png

    rabbitMq 的模式介绍:

    Direcrt 模式

    我们需要讲消息发送给唯一一个节点时候使用这种模式 这是最简单的一个模式:


    image.png

    但是这种模式需要注意下面几点:

    image.png

    我们来创建 一个队列: 创建 test 队列


    image.png

    其中的参数是:


    image.png
    接下来我们先写一个简单的Direct模式:
    1.首先创建一个模块 rabbitmq_demo
    2.pom引入依赖

    <dependency>
    <groupId>com.tensquare</groupId>
    <artifactId>tensquare_common</artifactId>
    <version>1.0-SNAPSHOT</version>
    </dependency>
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-amqp</artifactId>
    </dependency>
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    </dependency>
    3.配置application.yml 加入配置文件
    spring:
    rabbitmq:
    host: 192.168.1.123
    server:
    port: 9008
    4.接下来创建 启动类


    image.png
    5.接下来创建 消费者
    image.png
    6.最后我们写一个测试类
    @RunWith(SpringRunner.class)
    @SpringBootTest(classes = RabbitMqDemoApplication.class)
    public class MqTest {
    @Autowired
    private RabbitTemplate rabbitTemplate;
    @Test

    public void testSend() {
    rabbitTemplate.convertAndSend("test","我是测试信息");
    }
    }
    7.测试 先启动程序 后启动测试类
    观察打印输出


    image.png

    分裂模式 fanout

    当我们需要讲消息一次发送给多个队列的时候需要使用到这个模式


    image.png

    但是需要注意下面的几点:


    image.png

    接下来我们需要 创建交换器 名字是testexchange

    image.png

    之后你会发现 在交换器列表出现了此交换器


    image.png

    接下来我们要创建两个队列


    image.png
    进入 交换机的配置页面
    image.png

    将我们想要配置的那两个队列配置到交换器上面


    image.png

    接下来我们写代码 :

    第一个队列 消费者
    @Component
    @RabbitListener(queues = "testexchangequeue")
    @Slf4j
    public class Customer2 {
    @RabbitHandler
    public void showMessage(String message) {
    log.info("testexchangequeue队列收到的消息"+message);
    }
    }
    第二个队列 消费者
    @Slf4j
    @Component
    @RabbitListener(queues ="xxx" )
    public class Customer3 {
    @RabbitHandler
    public void showMessage(String msg) {
    log.info("xxx队列收到的消息" + msg);
    }
    }
    测试类发送消息:
    @Test
    public void testSendFanout() {
    System.out.println("fanout已经分发");
    rabbitTemplate.convertAndSend("testexchange",null,"fanout模式发送的消息");
    }
    测试结果如下: 两个队列都收到了消息。


    image.png

    主题模式 topic

    image.png

    主题模式很复杂 有很多注意点 需要我们注意:

    image.png
    image.png

    我们先来创建一个交换器 类型选择 tocpic

    image.png

    进入设置 进行配置 记得要配置 规则 routingKey


    image.png

    如上图 一共绑定了三个队列 并定了三个规则

    编写测试类 也就是发送消息的 测试类 :
    @Test
    public void testSendTop1() {
    rabbitTemplate.convertAndSend("topictest","goods.aaa","test 。。 goods.# 。。 topic");
    }
    @Test
    public void testSendTop2() {
    rabbitTemplate.convertAndSend("topictest","xx.log"," testexchangequeue 。。 #.log .. topic ");
    }
    @Test
    public void testSendTop3() {
    rabbitTemplate.convertAndSend("topictest", "goods.log", "xxx 。。goods.log 。。 topic ");
    }
    分别测试 结果如下所示:
    testSendTop1 :


    image.png

    testSendTop2:


    image.png

    testSendTop3 结果 三个队列都收到消息了


    image.png

    相关文章

      网友评论

          本文标题:消息中间件介绍 RabbitMq Docker上安装

          本文链接:https://www.haomeiwen.com/subject/ofvmpqtx.html