docker下载指令
docker run -it --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3.10-management
下载后直接在网址输入ip端口:15672就能进去管理界面如果进不去可以尝试关闭防火墙,指令为
systemctl stop firewalld
查看防火强状态
systemctl status firewalld
查看所有下载好的指令
docker ps -a
查看下载好的镜像
docker images
查IP端口有没有被占用指令为
netsta -anp |grep 5672卸载
删除下载的MQ
先查看所有下载好的指令,删除关于mq的文件指令为
docker rm -f 需要卸载的CONTAINER ID
查看下载好的镜像,删除关于mq的镜像
docker rmi -f 需要删除的IMAGE ID启动RabbitMQ容器
关闭容器
docker stop 容器名
打开容器
docker start 容器名
查看是否能访问容器
cmd里面输入
telnet ip地址idea使用RabbitMQ
创建springboot项目,创建子项目,输入配置信息
#??RabbitMQ?IP?? spring.rabbitmq.host=你的IP地址 #??rabbitmq??????? spring.rabbitmq.port=5672 #??rabbitmq??????? spring.rabbitmq.virtual-host=/ #??rabbitmq?????? spring.rabbitmq.username=guest #??rabbitmq????? spring.rabbitmq.password=guest spring.rabbitmq.listener.simple.prefetch=1 #手动应答 #spring.rabbitmq.listener.simple.acknowledge-mode=manual #自动应答 z spring.rabbitmq.listener.simple.acknowledge-mode=auto # 开启自动重试 spring.rabbitmq.listener.simple.retry.enabled=true # 最大重试次数 spring.rabbitmq.listener.simple.retry.max-attempts=5 #最大间隔时间 spring.rabbitmq.listener.simple.retry.max-interval=20000ms #重试间隔时间 3秒 spring.rabbitmq.listener.simple.retry.initial-interval=3000ms #乘子 重试间隔*乘子得出下次重试间隔 3s 6s 12s 24s 此处24s>20s 走20s spring.rabbitmq.listener.simple.retry.multiplier=2 #重试次数超过上面的设置之后是否丢弃(false不丢弃时需要写相应代码将该消息加入死信队列) spring.rabbitmq.listener.simple.default-requeue-rejected=false
创建配置类:在配置类写交换机的配置,队列的配置,绑定信息
交换机的配置
@Bean
public DirectExchange directExchange(){
return new DirectExchange("DirectExchange-01",true,false) ;
}
@Bean
队列的配置
@Bean
public Queue DirectQueue(){
return QueueBuilder.durable("DirectQueue-01").build();
// 自动删除
// return QueueBuilder.durable("DirectQueue-01").autoDelete().build();
}
绑定信息
@Bean
public Binding binding(){
return BindingBuilder.bind(DirectQueue()).to(directExchange()).with("Direct-RoutingKey-01");
}
如果仅仅是写好配置信息却没有调用的话,是不会往队列里发送信息的,这时候我们就要调用我们写好的配置,首先我们创建消费者加入注解 @RabbitHandler这要知道springMVC的执行流程。了解过后知道Handler是执行类。加入注解@RabbitListener用来监听我们想监听的地方,这里我们要监听的是我们配置类中创建的队列。这时候如果我们运行的话就会向队列里发出请求。队列也可以接收到请求。
消费者类,consumer
建立一个DirectConsumer
@Component
public class DirectConsumer {
@RabbitHandler
@RabbitListener(queues = "DirectQueue-01")
public void process(Message message) {
String test = new String(message.getBody());
System.out.println(test);
}
}
| @RabbitHandler | handler类用来执行的 |
| @RabbitListener | 用来监听队列的 |
这是用来消费队列数据的
生产者类provider
建立一个DirectProvider
@Component
public class DirectProvider {
@Resource
private RabbitTemplate rabbitTemplate;
public void send(){
Message message=new Message("你好 ".getBytes());
rabbitTemplate.send("DirectExchange-01","Direct-RoutingKey-01",message);
}
}



