SpringAMQP消息队列

安装RabbitMQ


在linux上安装RabbitMQ,并运行

shell 复制代码
docker run \
 -e RABBITMQ_DEFAULT_USER=zywzy \
 -e RABBITMQ_DEFAULT_PASS=123321 \
 --name mq \
 --hostname mq1 \
 -p 15672:15672 \
 -p 5672:5672 \
 -d \
 rabbitmq:3-management

http://ip:15672 访问控制台, 用户名zywzy,密码123321

引入依赖


xml 复制代码
		<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-amqp</artifactId>
        </dependency>

配置文件


yml 复制代码
spring:
  rabbitmq:
    host: 172.27.99.52 # rabbitMQ的ip地址
    port: 5672 # 端口
    username: abc
    password: 123321
    virtual-host: /

发送消息


java 复制代码
@SpringBootTest
public class SpringAmqpTest {
    @Autowired
    private RabbitTemplate rabbitTemplate;

    @Test
    public void testSendMessage2SimpleQueue() {
        String queueName = "simple.queue";
        String message = "hello, spring amqp!";
        rabbitTemplate.convertAndSend(queueName, message);
    }
}

消费消息


java 复制代码
	@RabbitListener(queues = "simple.queue")
    public void listenWorkQueue1(String msg) throws InterruptedException {
        System.out.println("消费者1接收到消息:【" + msg + "】" + LocalTime.now());
    }

消息预取


  • 每次只能取一条消息,处理完成才能取下一条消息
yml 复制代码
spring:
  rabbitmq:
    listener:
      simple:
        prefetch: 1