Java SpringBoot AMQP

AMQP(高级消息队列协议)是一个提供统一消息服务的应用层标准高级消息队列协议。是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可 传递消息,并不受客户端/中间件的不同产品,不同开发语言等条件的限制。

一、pom

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-amqp</artifactId>
        </dependency>

二、配置文件application.properties

# rabbitmq
spring.rabbitmq.host=127.0.0.1
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
spring.rabbitmq.virtual-host=

三、控制器测试读写

import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

@RestController
@RequestMapping("/mq")
@Slf4j
public class MqController {
    @Autowired
    private RabbitTemplate rabbitTemplate;

    @PostMapping("/set")
    public void set() {
        rabbitTemplate.convertAndSend("exchange0", "aaa", new Date());
    }

    @PostMapping("/sets")
    public void sets() {
        for (int i = 1; i <= 999; i++) {
            double f = Math.random();
            rabbitTemplate.convertAndSend("exchange0", "aaa", f);
        }
    }

    @PostMapping("/get")
    public Object get() {
        return rabbitTemplate.receiveAndConvert("queue0");
    }

    @PostMapping("/gets")
    public List<Object> gets() {
        List<Object> list = new ArrayList();

        while (list.size() < 99) {
            Object obj = rabbitTemplate.receiveAndConvert("queue0");
            if (obj == null) break;
            list.add(obj);
        }

        log.info("return size: {}", list.size());
        return list;
    }
}

 

posted @ 2023-08-14 15:41  都是城市惹的祸  阅读(82)  评论(0)    收藏  举报