zoukankan      html  css  js  c++  java
  • Active MQ 消息队列

    1、前言

    MQ是消息中间件,是一种在分布式系统应用程序借以传递消息媒介,常用的有ActiveMQ,RabbitMQ,kafka。

    2、Active MQ简介

    ActiveMQ是Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ是一个完全支持JMS1.1J2EE 1.4规范的 JMS Provider实现,尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中间仍然扮演着特殊的地位。

    官网:http://activemq.apache.org/

    特点:

    • 支持来自Java,C,C ++,C#,Ruby,Perl,Python,PHP的各种跨语言客户端和协议
    • 完全支持JMS客户端和Message Broker中的企业集成模式
    • 支持许多高级功能,如消息组,虚拟目标,通配符和复合目标
    • 完全支持JMS 1.1和J2EE 1.4,支持瞬态,持久,事务和XA消息
    • Spring支持,以便ActiveMQ可以轻松嵌入到Spring应用程序中,并使用Spring的XML配置机制进行配置
    • 专为高性能集群,客户端 - 服务器,基于对等的通信而设计
    • 支持可插拔传输协议,例如in-VM,TCP,SSL,NIO,UDP,多播,JGroups和JXTA传输
    • 使用JDBC和高性能日志支持非常快速的持久性
    • 支持AJAX

    ActiveMQ消息形式:topic(非安全的),queue(安全的)
    topic和queue区别:

    • topic:不安全 、没有状态的、一对多 、数据容易丢失的、传输速率高。
    • queue:安全、有状态的、一对一、数据不容易丢失的、传输速率低。

    工作流程:

    a用户把消息发送到mq的消息池里,mq负责接受这条消息,如果接到消息了,把连接断开了。mq有一个监控的功能,监控b用户是否上线。如果b用户上线了,把a用户的消息发送给b用户。b用户会把消息的返回值告诉连接池,完了b用户和连接池就断开了。mq接受到了b用户给它的返回值。(a用户只是把消息发过去了,还没有接收到信息 )连接池时刻监视a用户是否在线,如果a用户上线了再把返回值发送给a用户。发送完成之后连接断开了。

    topic消息形式工作流程: 首先用户a把发送消息到消息池里, mq会存放你的消息,监控到b用户上线,将这条消息发过去。发送过去后,mq会把这条消息删掉,(如果b在返回的时候断掉了,那消息就丢了)。如果返回没断监控a用户上线,把消息返回给a。

    queue消息形式工作流程: 首先用户a把发送消息到消息池里, mq会存放你的消息,监控到b用户上线,将这条消息发过去。发送过去后,mq不会把这条消息删掉,会一直保留消息池里。当把消息给b,b接收到消息。mq接收到b的返回值,mq把b的返回值给a之后,才会把这个消息删掉。

    3、Active MQ单点部署

    1.ActiveMQ需要JDK支持

    $ yum install java-1.8.0-openjdk*
    $ java -version
    

    2.下载
    http://activemq.apache.org/download.html

    3.解压安装

    $ tar xf apache-activemq-5.15.10-bin.tar.gz 
    $ mv apache-activemq-5.15.10 /usr/local/
    $ ln -s /usr/local/apache-activemq-5.15.10/ /usr/local/activemq
    

    4.设置环境变量

    $ vim vim /etc/profile
    export ACTIVEMQ_HOME=/usr/local/activemq
    export PATH=$PATH:$ACTIVEMQ_HOME/bin
    
    $ source /etc/profile
    

    5.配置

    $ vim /usr/local/activemq/conf/activemq.xml 
    # 客户端参数默认值: 监听端口 61616, 最大连接数 1000, 最大消息 100M
    <transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnections=1000&amp;wireFormat.maxFr
    ameSize=104857600"/>
    

    6.启动

    $ activemq start
    $ netstat -lntup |grep -E "6161*|8161"
    tcp6       0      0 :::61613                :::*                    LISTEN      11674/java          
    tcp6       0      0 :::61614                :::*                    LISTEN      11674/java          
    tcp6       0      0 :::61616                :::*                    LISTEN      11674/java          
    tcp6       0      0 :::8161                 :::*                    LISTEN      11674/java  
    
    # 8161 是管理端口
    

    7.浏览器访问管理

    # 浏览器打开: http://ip:8161/admin
    # 用户名/密码: admin/admin(可以在 conf/users.properties 中修改)
    

  • 相关阅读:
    博客园注册成功,博客开张啦!
    Android零基础开发专题三:Android SDK帮助文档使用方法
    Android平台介绍
    Android零基础开发专题五:Activity、BroadcastReceiver、Service、Content Provider
    Android零基础开发专题四:Android 项目文件结构
    Android零基础开发专题二:Hello Android,I am coming!
    与大家分享一下我的面试经历,也算对自己的一次总结。大家有什么心得,意见都可以畅所欲言。
    分布式安装sde、oracle后,其它机器如何通过arcsde连接oracle?
    【SQLSERVER】存儲過程的寫法格式規格
    利用SQLServer复制功能实现与Oracle数据库同步(转)
  • 原文地址:https://www.cnblogs.com/jasonminghao/p/12617312.html
Copyright © 2011-2022 走看看