springboot RabbitMQ

我们先创建spring项目,
添加依赖

 <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-amqp</artifactId>
      <version>2.4.4</version>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
      <version>2.4.4</version>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <version>2.4.4</version>
    </dependency>

生产者
创建一个生产者模块
application配置文件 我们这里的服务端口号:8081

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

配置文件,这里主要是 声明队列、交换机、绑定交换机、队列

package org.example.config;

import com.rabbitmq.client.AMQP;
import net.minidev.json.JSONUtil;
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.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class RabbitMQConfig {

    @Bean//声明对垒
    public Queue queue(){
        return new Queue("amqp_queue2");
    }

    @Bean//声明交换机
    public TopicExchange  topicExchange(){
        return new TopicExchange("amqp_exchange2");
    }
    @Bean//绑定交换机和队列
    public Binding binding(){
        return BindingBuilder.bind(queue()).to(topicExchange()).with("*.amqp.#");}
}

我们在测试类中添加的启动文件,这里主要是使用了 rabbitTemplate 使用他下面的方法converAndSend(交换机,路由,信息)

package org.example.send;

import org.junit.jupiter.api.Test;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.boot.test.context.SpringBootTest;

import javax.annotation.Resource;

@SpringBootTest
public class RabbitQMTest {
    @Resource
    private RabbitTemplate rabbitTemplate;

    @Test
    public void  test1(){
        String message="Hello";
        System.out.println("发送消息:"+message);
        //发送消息
        rabbitTemplate.convertAndSend("amqp_exchange2","test.amqp",message);
    }
}

package org.example.send;

import org.junit.jupiter.api.Test;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.boot.test.context.SpringBootTest;

import javax.annotation.Resource;

@SpringBootTest
public class RabbitQMTest {
    @Resource
    private RabbitTemplate rabbitTemplate;

    @Test
    public void  test1(){
        String message="Hello";
        System.out.println("发送消息:"+message);
        //发送消息
        rabbitTemplate.convertAndSend("amqp_exchange2","test.amqp",message);
    }
}

消费者

配置文件 我们这里使用的端口号是8082 这样视为了避免与消费者同时启动发生端口号冲突。

spring:
  rabbitmq:
    host: 192.168.26.146
    port: 5672
    username: guest
    password: guest
    virtual-host: /yeb
server:
  port: 8082

接受消息 主要是使用两个注解
@RabbitListener声明队列
@RabbitHandler 监听处理方法

package org.example;

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

@Component
@RabbitListener(queues = "amqp_queue2")
public class RecvInit {


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

启动类

package org.example;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

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

我们先启动消费者、然后在启动生产者。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值