zoukankan      html  css  js  c++  java
  • activeMQ从入门到简单集群指南

    1.什么是amq

    MQ是消息中间件,基于JAVA的JMS消息服务机制来传递信息。

    2.mq的作用

    MQ给程序之间提供了一个缓冲,避免了在程序交互频繁的情况下,提高程序性能瓶颈和数据的可靠性

    3.mq怎么用

    一个producer基于JMS的机制,写好信息,通过MQ的服务地址和传输端口,建立通信,把poducer的信息发送到MQ中,MQ接收到队列等待消费者程序来消费掉刚队列接收的数据,消费者同样基于JMS机制的消费机制开发,消费端程序根据已配置好的生产队列名称,通过一个监听机制,队列中是否有可消费数据,来进行消费。

    4.mq的安装

    1.安装JDK环境,JRE 1.7 (1.6 for version <=5.10.0)意思是至少1.7以上版本才能能用新版MQ
    2.下载MQtar包
    3.解压
    4.无修改的话,直接进入解压路径/bin 《执行./activeMQ start》Daemon方式启动。(后台进程常驻系统)
    5.测试安装是否成功
    URL: http://127.0.0.1:8161/admin/
    Login: admin
    Passwort: admin
    Navigate to "Queues"
    Add a queue name and click create
    Send test message by klicking on "Send to"
    6.查看日志
    [activemq_install_dir]/data/activemq.log")
    启动正常的日志形式:
    Apache ActiveMQ 5.11.1 (localhost, ID:ntbk11111-50816-1428933306116-0:1) started | org.apache.activemq.broker.BrokerService | main
    7.默认端口是61616,检查是否被监听
    linux 平台执行lsof -i:61616 or netstat -nlap|grep 61616
    

    5.mq的一般配置

    5.1传输端口修改

    /conf/activemq.xml 找到该行修改即可

      <transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
    

    6.mq的调优

    参考文章:https://blog.csdn.net/u012758088/article/details/78036483

    7.mq的高可用

    7.1高可用的必要性

    7.2高可用的两种协议客户端代码配置使用的(failover、network)

    7.3高可用的几种配置方式

    7.3.1负载均衡型(集群数据分流)

    待补充

    7.3.2通过zookeeper+avtivemq

    zookeeper部署参考链接:
    https://www.cnblogs.com/shihuc/p/7222048.html

    依赖:jdk+zookeeper 【需先部署好才能配置mq】
    假定环境:192.168.0.10/11/12
    1.在10服务器配置好一个MQ文件夹
    2.复制到11,12 修改conf/avtivemq.xml,在持久化存储的位置注释掉原来的,把下面的加入

    <persistenceAdapter>
                <replicatedLevelDB 
                    directory="${activemq.data}/leveldb" #修改使用leveldb做持久化存储
                    replicas="3" #集群数量
                    bind="tcp://0.0.0.0:0" #写0就是全部监控
                    zkAddress="10.90.7.10:2181,10.90.7.11:2182,10.90.7.11:2183" #不同IP端口可以不改,伪集群才需要通过修改端口实现
                    hostname="10.90.7.10" #填写部署mq的ip
                    sync="local_disk"#必须写 不写就默认为写到内存
                   zkPath="/activemq/leveldb-stores" #不是实际存放路径,zookeeper用来交换选举信息的
               />
            </persistenceAdapter>
    

    3.配置完成后,启动观察日志activemq_home/data/active.log,观察三台机器的日志,如果有异常,就把按照问题集锦里的方式处理,否则在google里搜索。
    4.分别在三台机器,执行命令

    netstat -nlap|grep java
    

    三台机器中应该有一台机器可以查询到以下消息,才是部署成功。

    [root@localhost ~]# netstat -nlap|grep java
    tcp6       0      0 :::1883                 :::*                    LISTEN      28418/java          
    tcp6       0      0 :::8161  :::*                    LISTEN      28418/java         #mq 控制台端口 
    tcp6       0      0 :::8899                 :::*                    LISTEN      1741/java           
    tcp6       0      0 :::2181                 :::*                    LISTEN      3620/java #zookeeper    client端口    
    tcp6       0      0 :::44646                :::*                    LISTEN      28418/java          
    tcp6       0      0 :::5672                 :::*                    LISTEN      28418/java          
    tcp6       0      0 :::61613                :::*                    LISTEN      28418/java   #mq集群端口       
    tcp6       0      0 :::61614   #mq集群端口             :::*                    LISTEN      28418/java          
    tcp6       0      0 :::61616                :::*                    LISTEN      28418/java     #mq监听端口     
    tcp6       0      0 :::37456                :::*                    LISTEN      28418/java          
    tcp6       0      0 :::3888                 :::*                    LISTEN      3620/java           
    tcp6       0      0 :::34648                :::*                    LISTEN      3620/java           
    
    

    5.检查zookeeper,是否选举。
    5.1 任意一台部署zookeeper机器,cd到zookeeper_home/bin/zkCli.sh
    5.2 使用常规命令执行检查

    文章参考:https://www.cnblogs.com/chengxuyuanzhilu/p/6698059.html
    
    ls /路径 #按tab键可以自动补全
    get /路径/路径#查看 选举信息,选举信息(elected":null)不为空就是主,所以要全部看一次才知道哪个是主
    例子
    zk: localhost:2181(CONNECTED) 14] get /activemq/leveldb-stores/00000000014
    {"id":"localhost","container":null,"address":null,"position":46,"weight":1,"elected":null}
    
    

    5.4 关闭master的mq应用,检查是否转移到其他服务,三台机器都执行这个命令

    netstat -nlap|grep java
    检查有无步骤4的结果,有的话检查zookeeper选举信息,参考步骤5检查
    

    5.5 转移成功就是成功搭建了集群,最靠谱的方式还是要通过完成的代码测试发送消息看看。

    8.mq控制台的常规解释

    控制台登录:
    http://部署ip:8161/admin
    默认账号密码
    admin
    admin

    8.1 amq的控制方式

    8.1.1 使用命令行方式控制amq

    查看日志启动方式
    ./bin/activemq console

  • 相关阅读:
    stack2
    xctf 实时数据监测
    note-service2
    stack pivot学习
    sctf_2019_easy_heap 利用off-by-null构造出double free来向任一地址写入(经典)
    ciscn_2019_s_1 unlink或者of-by-null
    starctf_2019_babyshell 绕过循环检测注入shellcode
    sublime 安装package control
    windows上安装nodejs,升级npm,安装webpack指南
    mysql 常见语句
  • 原文地址:https://www.cnblogs.com/muzhifei/p/muji.html
Copyright © 2011-2022 走看看