036-云E办_Spring集成RabbitMQ-spring AMQP

复习:
send-发送端:
1.通过配置类去配置:Queue队列、TopicExchange交换机、Binding绑定队列和交换机带上路由key【a.*]】
2.发送消息:通过RabbitTemplate模板 .converAndSend转换并发送,(带上交换机和路由key 【a.txt】。从而就会根据交换机和路由k进行匹配,从而找到对应的队列。

在这里插入图片描述
在这里插入图片描述

recv-接收端:
1.两个注解:
@RabbitListener(queuqes=“队列名字”)用来专门监听队列
@RabbitHandler:监听之后获取消息的处理方法。
在这里插入图片描述

一、搭建项目:

为什么使用spring-AMQP
1.基于spring之上,社区活跃
2.对MAQP进行了高度封装
3.极大简化了RabbitMQ的操作
4.易用性、可扩展

1、创建父部项目Project

1.父部环境

在这里插入图片描述

2.父部依赖:做依赖管理

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
<!--父部依赖,做依赖管理的-->
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.7.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
  </parent>

  <groupId>com.xxxx</groupId>
  <artifactId>springamp-demo</artifactId>
  <version>1.0-SNAPSHOT</version>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>
</project>

2、创建子项目module:send

1.搭建环境:

在这里插入图片描述
在这里插入图片描述

2.依赖:

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.xxxx</groupId>
  <artifactId>amqp-send</artifactId>
  <version>1.0-SNAPSHOT</version>

  <parent>
    <groupId>com.xxxx</groupId>
    <artifactId>springamp-demo</artifactId>
    <version>1.0-SNAPSHOT</version>
  </parent>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>

  <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>
    </dependency>
  </dependencies>
</project>

3. application

创建 resources文件夹
在这里插入图片描述
在这里插入图片描述
创建application.yml:

spring:
  rabbitmq:
    host: 192.168.75.100
    port: 5672
    username: yeb
    password: yeb
    virtual-host: /yeb
server:
  port: 8081

在这里插入图片描述

4.send配置类:

package com.xxxx.send.config;

import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.Queue;
import org.springframework.amqp.core.TopicExchange;
import org.springframework.boot.autoconfigure.condition.ConditionalOnNotWebApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class RabbitMQConfig {
    /**
     * 配置类需要哪些东西?
     * 1.交换机
     * 2.队列
     * 3.交换机和队列做绑定
     *
     */

    /**
     * 声明队列
     * @return
     */
    @Bean
    public Queue queue(){
        return new Queue("amqp_queue");
    }

    /**
     * 主题模式:工作中主要是用主题模式
     * 声明交换机
     *
     */
    @Bean
    public TopicExchange topicExchange(){
        return new TopicExchange("amqp_exchange");
    }

    /**
     * 绑定交换机和队列,  主题配置路由:"*.amqp.#"
     *    用通配符进行绑定
     *
     */
    @Bean
    public Binding binding(){
        return BindingBuilder.bind(queue()).to(topicExchange()).with("*.amqp.#");
    }

}

5. send test:

@SpringBootTest
@RunWith(SpringRunner.class)
public class RabbitMQTest {
    @Autowired
    private RabbitTemplate rabbitTemplate;
    @Test
    public void testSend(){
        String message = "hell0";
        System.out.println("发送消息: " + message);
        //发送消息:
        //(交换机、路由、消息)
        //其中配置类路由是:"*.amqp.#"  而 test.amqp是可以找到的。
        rabbitTemplate.convertAndSend("amqp_exchange","test.amqp",message);
    }

}

3、创建子项目module:revc。同send

  1. 2.1 和 2.2同创建send基本一模一样
  2. 2.3:将端口分开:application.yml:server: port 8082
  3. 没有2.4和2.5的配置类和测试文件

RecvInit

package com.xxxx.send;

import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;

@Component
//监听队列:
@RabbitListener(queues = "amqp_queue")
public class RecvInit {

    //监听后获取消息的方法:
    @RabbitHandler
    public void testRecv(String message){
        System.out.println("接收到的消息:  " + message);
    }
}

二、测试:此demo是简单模式

必须先启动send,进行发送:
在这里插入图片描述

然后启动recv,进行监听,接受消息:
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值