zoukankan      html  css  js  c++  java
  • activeMQ 讲解及实战

    #### 软件架构
    项目中需要用到activeMQ
    下载地址:http://activemq.apache.org/download.html

    #### 安装教程
    需要安装jdk环境
    activeMQ免安装下载完成后在
    ./bin/activemq start :启动服务
    ./bin/activemq stop :停止服务
    ./bin/activemq restart :重启 服务


    #### 使用说明

    ## com.abel.main 包下的类 简单demo 测试成功即可
    ## transcation 包下的是事务提交数据
    ## onmessage 包下的监听消息队列,有消息进来就可以接收到
    ## publis.subscribe 发布/订阅模式

    ## activeMQ 安全认证 : 指定用户进行数据发布和监听
    * ./conf/activeMQ 中的broker标签 中增加

    <plugins>
        <!-- use JAAS to authenticate using the login.config file on the classpath to configure JAAS -->
        <!-- 添加jaas认证插件activemq在login.config里面定义,详细见login.config-->
        <jaasauthenticationplugin configuration="activemq"></jaasauthenticationplugin>
        <!-- lets configure a destination based authorization mechanism -->
        <authorizationplugin>
            <map>
                <authorizationmap>
                    <authorizationentries>
                        <authorizationentry topic=">" read="admins" write="admins" admin="admins">
                        <authorizationentry queue=">" read="admins" write="admins" admin="admins">
                        <authorizationentry topic="ActiveMQ.Advisory.>" read="admins" write="admins" admin="admins">
                        <authorizationentry queue="ActiveMQ.Advisory.>" read="admins" write="admins" admin="admins">
                    </authorizationentry></authorizationentry></authorizationentry></authorizationentry></authorizationentries>
                </authorizationmap>
            </map>
        </authorizationplugin>
    </plugins>

    * ./conf/login.config 中设置用户和租信息

    activemq {
        org.apache.activemq.jaas.PropertiesLoginModule required
        org.apache.activemq.jaas.properties.user = "users.properties"
        org.apache.activemq.jaas.properties.group = "groups.properties";
    };

    * ./conf/users.properties 中设置用户
    > 用户名=密码
    * ./conf/groups.properties
    > 组名=用户名,用户名1

    ## persistence 持久化测试
    * kahadb方式
    * 是ActiveMQ默认的持久化策略。kahadb是一个文件型数据库。是使用内存+文件保证数据的持久化的。kahadb可以限制每个数据文件的大小。不代表总计数据容量

    <persistenceadapter>
        <!-- directory:保存数据的目录; journalMaxFileLength:保存消息的文件大小 -->
        <kahadb directory="${activemq.data}/kahadb" journalmaxfilelength="16mb"></kahadb>
    </persistenceadapter>


    * 特性是
    1、日志形式存储消息;2、消息索引以B-Tree结构存储,可以快速更新;3、完全支持JMS事务;4、支持多种恢复机制;
    * jdbc 模式
    * ./conf/activemq.xml broker标签中的persistenceAdapter
    由默认kahadb 改为persistenceAdapter jdbc 持久化标签
    dataSource指定持久化数据库的bean,createTablesOnStartup是否在启动的时候创建数据表,默认值是true,这样每次启动都会去创建数据表了,一般是第一次启动的时候设置为true,之后改成false。

    <jdbcpersistenceadapter datasource="#mysql-ds" createtablesonstartup="true"></jdbcpersistenceadapter>
    * undefined标签之外增加数据库配置内容
    undefined<bean id="mysql-ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
    <property name="url" value="jdbc:mysql://localhost/activemq?relaxAutoCommit=true"></property>
    <property name="username" value="activemq"></property>
    <property name="password" value="activemq"></property>
    <property name="maxActive" value="200"></property>
    <property name="poolPreparedStatements" value="true"></property>undefined</bean>

    * 说明1:配置成功后可能出现缺包的状况 需要增加 mysql驱动及jdbc连接池的jar包
    commons-pool、commons-dbcp、mysql-connector-java
    * 说明2: 创建数据库的时候数据库的的字符集为:latin1 否则activemq_acks 表无法初始化创建

    ## springmvc 整合 模块mvnproducer 发送消息 mvcconsumer 接受消息并处理
    #* colony activeMQ 主从
    * zk 集群安装步骤
    * zookeeper 免安装 减压完成后需要在里面创建一个myid文件,里面设置zk的编号(智能是大与等于1的自然数) echo 1 >> myid
    * conf/zoo_sample.cfg 属于模板文件,需要重新复制一个zoo.cfg文件 zk默认访问的是此文件,修改此文件:
    * 1、dataDir: zk文件路径/data
    * 2、clientPort: 多个zk的端口设置的不一样
    * 3、server.编号=IP:投票端口:选举端口 投票端口: 用于决定正在运行的主机是否宕机. 选举端口: 用于决定哪一个Zookeeper服务作为主机 多个zk配置多个server 配置应该一样
    * 启动所有zk zk/bin/zkServer.sh start
    * 查看zk 状态 zk/bin/zkServer.sh status 查看 Mode: leader 表示主机 Mode: follower 表示从机
    * activeMQ 集群安装步骤
    * 修改多个jetty.xml 的端口号不一样
    * 修改activemq.xml 中的标签broker中的brokerName属性的名称设为一致的
    * 修改持久化配置信息 broker 标签中的 persistenceAdapter 信息
    * replicas属性代表当前主从模型中的节点数量
    * bind属性中的端口为主从实例之间的通讯端口。代表当前实例对外开放端口是什么,三个实例分别使用62626、62627、62628端口
    * zkAddress属性代表ZooKeeper安装位置,安装具体情况设置。
    * zkPath是ActiveMQ主从信息保存到ZooKeeper中的什么目录内
    * hostname为ActiveMQ实例安装Linux的主机名,可以在/etc/hosts配置文件中设置。设置格式为:IP 主机名。 如: 127.0.0.1 mq-server

    <persistenceadapter>
        <!-- <kahaDB directory="${activemq.data}/kahadb"></kahaDB> -->
        <replicatedleveldb directory="${activemq.data}/levelDB" replicas="3" bind="tcp://0.0.0.0:62626" zkaddress="192.168.26.50:2181,192.168.26.50:2182,192.168.26.50:2183" zkpath="/activemq/leveldb-stores" hostname="mq-server"></replicatedleveldb>
    </persistenceadapter>

    * 修改activemq.xml对外提供的服务端口。原默认端口为61616
    * 查询activemq中的主从服务
    * 进入zk客户端进行查看 zk/bin/zkCli.sh
    * ls /activemq/leveldb-stores/ 有几个activeMQ 下面就会显示几个
    * get /activemq/leveldb-stores/00000000004 其中属性 elected:000000 表示主 selected:null 表示从

    项目地址

  • 相关阅读:
    查找oracle数据文件、表空间的位置
    select into 给多变量赋值
    关于Union 中 ORA-12704:字符集不匹配问题的解决
    weblogic线程阻塞性能调优(图解)
    window系统无法访问局域网内文件共享的问题
    查看oracle的sql语句历史记录和锁表的情况
    <c:forEach>标签的使用 JSTL
    CAS服务下单点登录(服务端与客户端)
    cas 配置数据源 , 解决CAS 不支持你提供的凭证 .
    信号量通俗释义
  • 原文地址:https://www.cnblogs.com/abel-he/p/9560282.html
Copyright © 2011-2022 走看看