zoukankan      html  css  js  c++  java
  • SpringAMQP 基础消息队列 HelloWorld

    SpringAMQP的官方地址:https://spring.io/projects/spring-amqp

    AMQP:Advanced Message Queuing Protocol,用于在应用程序之间传递业务消息的开放标准,该协议与语言和平台无关,更符合微服务中独立性的要求。

    SpringAMQP:基于AMQP协议定义的一套API规范,提供了模板来发送和接受消息。包含两部分,spring-amqp基础抽象,spring-rabbit底层的默认实现

    利用SpringAMQP实现HelloWorld中的基础消息队列功能

    引入AMQP依赖

    publisher和consumer服务都需要amqp依赖,把依赖直接放到父工程中

            <!--AMQP依赖,包含RabbitMQ-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-amqp</artifactId>
            </dependency>

    编写application.yml

    publisher和consumer服务的application都添加mq连接信息

    spring:
      rabbitmq:
        host: 192.168.223.128 # 主机名
        port: 5672 # 端口
        virtual-host: / # 虚拟主机
        username: guest # 用户名
        password: guest # 密码

    publisher编写发送消息代码

    @RunWith(SpringRunner.class)
    @SpringBootTest
    public class SpringAmqpTest {
        @Autowired
        private RabbitTemplate rabbitTemplate;
        @Test
        public void testSimpleQueue() {
            String queueName = "simple.queue";
            String message = "hello, spring amqp!";
            rabbitTemplate.convertAndSend(queueName, message);
        }
    }

    @RunWith(SpringRunner.class)将测试类添加到Spring容器中,自动注入才能生效

    @SpringBootTest注解会自动检索程序的配置文件,检索顺序是从当前包开始,逐级向上查找被@SpringBootApplication或@SpringBootConfiguration注解的类

    consumer编写获取消息代码

    在consumer服务中新建一个类,编写消费逻辑

    @Component
    public class SpringRabbitListener {
        @RabbitListener(queues = "simple.queue")
        public void listenSimpleQueueMessage(String msg) throws InterruptedException {
            System.out.println("spring 消费者接收到消息 :【" + msg + "】");
        }
    }

    @Component:添加到spring容器中,spring容器中的一个Bean

    @RabbitListener:监听队列,监听simple.queue队列

  • 相关阅读:
    LeetCode(123) Best Time to Buy and Sell Stock III
    LeetCode(122) Best Time to Buy and Sell Stock II
    LeetCode(147) Insertion Sort List
    360兼容模式不支持hidden属性的问题
    第一个博客,用来勉励自己,加油
    【LGR-059】洛谷7月月赛题解
    Codechef July Challenge 2019 Division 1题解
    AtCoder Grand Contest 035
    Comet OJ
    2019-7-3 感记
  • 原文地址:https://www.cnblogs.com/WarBlog/p/15475576.html
Copyright © 2011-2022 走看看