MQ杂

作者: 听说昨夜星子坠落 | 来源:发表于2019-07-02 13:56 被阅读0次

    异步收集:

    js script—request—>后台接口—>异步写文件(id,browser…cookie)—>日志收集(多线程)—>消息中间件(kafka等)—>1.流计算(实时统计) 或 —>2.归档 离线计算—>mysql—>报表

    异步处理:

    串行:注册—>email—>sms—>入库    (时间长)

    并行:注册—>1.email 或 —>2.sms

    异步:注册—>MQ(消息中间件)—>1.email 或 2.—>sms

    Order--发布—>MQ<—订阅—库存

    Request--发布—>MQ<—订阅—业务逻辑

    erlang:编写rabbit mq的语言,想要使用rabbit mq必须下载relang

    ⭐记录一个使用homebrew下载rabbit mq时遇到的问题:

    brew update时提示error,解决方法是首先进入到cd /usr/local/Homebrew目录下,执行git pull origin master,之后再执行brew update && brew upgrade即可

    获取MQ的连接 java代码:

    1.定义一个连接工厂  ConnectionFactory

    2.设置服务地址   setHost()

    3.使用AMQP协议,设置端口号  setPort()

    4.设置虚拟数据库setVirtualHost()

    5.设置用户名

    6.设置密码

    7.获取连接

    简单mq:

    生产者—>消息中间件—>消费者

    生产者发送消息:

        1.获取一个链接

        2.从连接中获取一个通道

        3.声明一个队列

        4.定义消息

        5.发布消息

        6.关闭通道和连接

    消费者消费消息:

        1.获取一个链接

        2.从链接中获取一个通道

        3.声明一个队列

        4.声明一个默认的消费者  new DefaultConsumer(channel)

            重写DefaultConsumer()中的handleDelivery方法,获取body(也就是传递的消息),可以进行log输出监测

        5.创建一个基本消费动作,监听队列:channel.basicConsume(queue_name,true,consumer)

    简单队列的不足:

    耦合性高——生产者一一对应消费者,如果想要多个消费者消费一个队列中的消息,这时候简单队列就不能满足需求

    一旦队列名变更,生产者和消费者得同时变更队列名

    相关文章

      网友评论

        本文标题:MQ杂

        本文链接:https://www.haomeiwen.com/subject/kouzcctx.html