安装
由于rabbitMQ使用Erlang语言编写,因此需要安装Erlang的运行环境,比较麻烦,主流的方式是使用docker镜像安装
拉取镜像
docker pull rabbitmq:3-management
运行实例
docker run \
-e RABBITMQ_DEFAULT_USER=minfine \
-e RABBITMQ_DEFAULT_PASS=1234567 \
--name mq \
--hostname mq1 \
-p 15672:15672 \
-p 5672:5672 \
-d \
rabbitmq:3-management
运行后,即可启动一个承载rabbitmq服务的实例,rabbitmq默认指定5672端口为客户端连接端口,15672为网页管理端端口,我们访问http://127.0.0.1:15672
即可访问管理端,用户名为上面设置的admin
,密码为1234567
使用
引入springAMQP来操作消息队列,这是目前spring boot中使用rabbitmq的主流实现方式
<!--AMQP依赖,包含RabbitMQ-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
编写配置文件
spring:
rabbitmq:
addresses: 127.0.0.1 #rabbitmq连接地址
port: 5672 #连接端口
username: itcast #用户名
password: 123321 #密码
最基本的发
作好上诉步骤后,可直接在业务中使用@Autowired
注解注入一个RabbitTemplate
对象,它是我们操作消息队列的实例,使用其convertAndSend
就可以将消息发送到队列中了
@Autowired
RabbitTemplate rabbitTemplate;
public void test(){
// 队列名称
String queueName = "simple.queue";
// 消息内容
String message = "hello world";
// 将消息发送到队列
rabbitTemplate.convertAndSend(queueName,message);
}
最基本的收
package com.minfine.mq;
import org.springframework.stereotype.Component;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
@Component
public class handle {
@RabbitListener(queues = "simple.queue")
public void listenSimpleQueueMessage(String text){
System.out.println("接受到队列消息:" + text);
}
}
我们可以通过在配置文件中配置一个prefetch
,控制客户端每次做多接受多少消息,例如下面的配置,表达每次只获取1条消息,处理完成才获取下一个消息
spring:
rabbitmq:
listener:
simple:
prefetch: 1