栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

RabbitMQ

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

RabbitMQ

安装

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);
    }

}
@RabbitHandlerhandler类用来执行的
@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);
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1013400.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号