Springboot结合RabbitMQ

pom.xml

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

application.yaml

yaml 复制代码
spring:
  rabbitmq:
    host: 127.0.0.1
    username: guest
    password: guest
    port: 5672
    virtual-host: test_vhost
    connection-timeout: 600000
    # 关闭自动ack,设置成手动ack
    listener:
      simple:
        acknowledge-mode: manual
        prefetch: 10
        concurrency: 2
        max-concurrency: 5

配置文件,也可以使用@PostConstruct

java 复制代码
@Configuration
public class RabbitMQConfig {
	/**
	* 绑定
	*/
    public static final String EXCHANGE_NAME="springboot_topic_exchange";
    public static final String QUEUE_NAME="springboot_queue";

    @Bean("exchange")
    public Exchange exchange(){
        return ExchangeBuilder.topicExchange(EXCHANGE_NAME).durable(true).build();
    }

    @Bean("queue")
    public Queue queue(){
        return QueueBuilder.durable(QUEUE_NAME).build();
    }

    @Bean()
    public Binding bindQueueExchange(@Qualifier("exchange")Exchange exchange,
                                     @Qualifier("queue")Queue queue){
        return BindingBuilder.bind(queue).to(exchange).with("boot.#").noargs();
    }
	
   /*
	* Fanout 模式
	*/
	public static final String EXCHANGE_NAME2="my_topic_exchange";
    public static final String QUEUE_NAME2="my_queue";
    //创建交换机
    @Bean
    public FanoutExchange fannoutExchange(){
        return new FanoutExchange(EXCHANGE_NAME2,true,false);
    }

    //创建队列
    @Bean
    public Queue fannoutQueue(){
        return new Queue(QUEUE_NAME2,true,false,false);
    }
    //声明绑定关系
    @Bean
    public Binding bindQueue(@Qualifier("exchange")Exchange exchange,
                                     @Qualifier("queue")Queue queue){
        return BindingBuilder.bind(fannoutQueue()).to(fannoutExchange());
    }
    
   /*
	* topic 模式
	*/
	@Bean
    public Queue topicQueue(){
        return new Queue(QUEUE_NAME,true,false,false);
    }
    //创建交换机
    @Bean
    public TopicExchange topicExchange(){
        return new TopicExchange(EXCHANGE_NAME,true,false);
    }
    //声明绑定关系
    @Bean
    public Binding bindTopicQueue(){
        return BindingBuilder.bind(topicQueue()).to(topicExchange()).with("yuyang.#");
    }

消费者代码

java 复制代码
@Component
@Slf4j
public class MessageListener  {
	@RabbitListener(queues="springboot_queue")
    public void process(Message message) {
        log.info("helloWorld模式 received message : {}",new String(message.getBody()));
    }


}

生产者代码

java 复制代码
	@Autowired
    private RabbitTemplate rabbitTemplate;

    // pub/sub 发布订阅模式   交换机类型 fanout
    @GetMapping("/fanoutSend")
    public String fanoutSend() throws AmqpException, UnsupportedEncodingException {
        //fanout模式只往exchange里发送消息。分发到exchange下的所有queue
        rabbitMQService.sendMessage("my_topic_exchange","*","fanoutSend");
        return "message sended : "+message;
    }

	//topic 工作模式   交换机类型 topic
    @GetMapping("/topicSend")
    public String topicSend() throws AmqpException, UnsupportedEncodingException {
        //fanout模式只往exchange里发送消息。分发到exchange下的所有queue
        rabbitTemplate.convertAndSend("spring_topic_exchange","yuyang.test","sadedf");
        return "ok";
    }

手动ack

java 复制代码
	@RabbitListener(queues = "springboot_queue")
    public void listenerQueue(Message message, Channel channel) throws IOException {
         log.info(new String(message.getBody()));
        channel.basicAck(message.getMessageProperties().getDeliveryTag(),false);
    }
相关推荐
RuoyiOffice7 小时前
SpringBoot3+Vue3 最推荐的开源 OA 系统 2026:流程驱动、资源闭环、多端互通
spring boot·vue3·flowable·oa·协同办公·spring boot 3·开源oa
计算机毕设定制辅导-无忧学长7 小时前
基于Spring Boot的玄幻小说个性化推荐平台设计与实现
java·vue.js·spring boot·后端·mysql·推荐算法
Harry Lei7 小时前
长期记忆系统的设计与实现
spring boot·postgresql·embedding
卓怡学长9 小时前
w156一周穿搭App的设计与实现
java·spring boot·spring·maven·intellij-idea
步行cgn10 小时前
Spring Boot 绑定简单 Bean 详解
java·spring boot·后端
爱折腾的编程老炮11 小时前
潮玩品牌自建抽盒机小程序——商城 + 抽盒 + 一番赏 + 会员 + 社区,一套代码怎么搭
spring boot·小程序·vue·mybatis·uniapp
谢亮_vipxieliang12 小时前
ValidX vs Google Guava Preconditions:验证 vs 断言
java·spring boot·后端·spring cloud·hibernate·guava
小小猪的春天21 小时前
Java 手写第一个 MCP Server:Spring AI MCP 半小时跑通
java·人工智能·spring boot·ai编程
计算机毕设定制辅导-无忧学长1 天前
《基于SpringBoot青年公寓出租管理系统的设计与实现》
java·vue.js·spring boot·青年公寓出租管理系统
MetaLite1 天前
AI编程与工程底座-让AI遵守SpringBoot边界
人工智能·spring boot·ai编程