博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
rabbitMq快速入门总结
阅读量:4152 次
发布时间:2019-05-25

本文共 2540 字,大约阅读时间需要 8 分钟。

一.管理后台登陆 http://ip:15672/#/
用户名:默认 guest
密码:默认 guest

二.五种工作模式:

             简单模式(无交换机)
             work(工作队列模式)
             routing(路由模式)  交换机type=direct   headers
             public(发布订阅模式)  交换机type=fanout
             topic(通配符模式)     交换机type=topic
             rpc

三.优缺点

ActiveMQ

  单机吞吐量:万级

  topic数量都吞吐量的影响:

  时效性:ms级

  可用性:高,基于主从架构实现高可用性

  消息可靠性:有较低的概率丢失数据

  功能支持:MQ领域的功能极其完备

  总结:

    非常成熟,功能强大,在早些年业内大量的公司以及项目中都有应用  

    偶尔会有较低概率丢失消息  

    现在社区以及国内应用都越来越少,官方社区现在对ActiveMQ 5.x维护越来越少,几个月才发布一个版本   

    主要是基于解耦和异步来用的,较少在大规模吞吐的场景中使用

 

RabbitMQ

  单机吞吐量:万级

  topic数量都吞吐量的影响:

  时效性:微秒级,延时低是一大特点。

  可用性:高,基于主从架构实现高可用性

  消息可靠性:

  功能支持:基于erlang开发,所以并发能力很强,性能极其好,延时很低

  总结:  

    erlang语言开发,性能极其好,延时很低;  

    吞吐量到万级,MQ功能比较完备  

    开源提供的管理界面非常棒,用起来很好用  

    社区相对比较活跃,几乎每个月都发布几个版本分  

    在国内一些互联网公司近几年用rabbitmq也比较多一些   但是问题也是显而易见的,RabbitMQ确实吞吐量会低一些,这是因为他做的实现机制比较重。  

    erlang开发,很难去看懂源码,基本职能依赖于开源社区的快速维护和修复bug。  

    rabbitmq集群动态扩展会很麻烦,不过这个我觉得还好。其实主要是erlang语言本身带来的问题。很难读源码,很难定制和掌控。

    
    
四.应用
1.引入坐标
  <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-amqp</artifactId>
    </dependency>
  
2.增加配置文件
  spring.rabbitmq.host=47.96.21.193
  spring.rabbitmq.port=5672
  spring.rabbitmq.username=test
  spring.rabbitmq.password=qwe123
  spring.rabbitmq.virtual-host=/neptune.test
  spring.rabbitmq.connection-timeout=20000
  
3.生产者(交换机,路由,队列都在管理页面创建好了,也可以在配置类中声明)
  @Service
  public class Send  { 
  
    private static final String EXCHANGE = "topic.python.exchange";
    private static final String ROUTING_KEY = "topic.python.rout.key";
    public static final String deepthimage = "deepthimage";
    public static final String superimage = "superimage";
    public static final String beautifulimage = "beautifulimage";
    @Autowired
    private AmqpTemplate rabbitTemplate;
    public void sindSuperImg(JSONObject mqJson) {
      mqJson.put("job_type", superimage);
      this.rabbitTemplate.convertAndSend(EXCHANGE, ROUTING_KEY, mqJson.toJSONString());
    }
    
  }
  
4.消费者(交换机,路由,队列都在管理页面创建好了,也可以在配置类中声明)
  @Service
  public class Recive extends BaseService {

    @Autowired

    private UserSuperImgMapper userSuperImgMapper;

    private static final String EXCHANGE = "topic.pythoncallback.exchange";

    private static final String EXCHANGE_DURABLE = "true";
    private static final String QUEUE_NAME = "pythoncallback.queue";
    private static final String QUEUE_DURABLE = "true";
    private static final String ROUTING_KEY = "topic.pythoncallback.rout.key";

    @RabbitListener(bindings = {

            @QueueBinding(exchange = @Exchange(type = ExchangeTypes.TOPIC, value = EXCHANGE, durable = EXCHANGE_DURABLE), value = @Queue(value = QUEUE_NAME, durable = QUEUE_DURABLE), key = ROUTING_KEY) })
    public void process(String json) {
        //处理业务逻辑
    }
  }
  
  
  

转载地址:http://yolti.baihongyu.com/

你可能感兴趣的文章
年薪50万+的90后程序员都经历了什么?
查看>>
2019年哪些外快收入可达到2万以上?
查看>>
【JavaScript 教程】标准库—Date 对象
查看>>
前阿里手淘前端负责人@winter:前端人如何保持竞争力?
查看>>
【JavaScript 教程】面向对象编程——实例对象与 new 命令
查看>>
我在网易做了6年前端,想给求职者4条建议
查看>>
SQL1015N The database is in an inconsistent state. SQLSTATE=55025
查看>>
RQP-DEF-0177
查看>>
MySQL字段类型的选择与MySQL的查询效率
查看>>
Java的Properties配置文件用法【续】
查看>>
JAVA操作properties文件的代码实例
查看>>
java杂记
查看>>
RunTime.getRuntime().exec()
查看>>
Oracle 分组排序函数
查看>>
删除weblogic 域
查看>>
VMware Workstation 14中文破解版下载(附密钥)(笔记)
查看>>
日志框架学习
查看>>
日志框架学习2
查看>>
SVN-无法查看log,提示Want to go offline,时间显示1970问题,error主要是 url中 有一层的中文进行了2次encode
查看>>
NGINX
查看>>