active的centos 7安装和使用
1、下载activemq,下载地址:http://archive.apache.org/dist/activemq。测试版本为apache-activemq-5.14.3。
2、在/ursr/local/目录下新建activemq文件夹,并进入该文件夹,执行如下命令解压文件。
cd /ursr/local mkdir activemq tar -xzvf apache-activemq-5.14.3-bin.tar.gz
3、在/etc/init.d/目录增加增加activemq文件,文件内容为:
cd /etc/init.d/ vi activemq
#!/bin/sh
#
# /etc/init.d/activemq
# chkconfig: 345 63 37
# description: activemq servlet container.
# processname: activemq 5.14.3
# Source function library.
#. /etc/init.d/functions
# source networking configuration.
#. /etc/sysconfig/network
export JAVA_HOME=/usr/local/java/jdk/jdk1.8.0_144
export CATALINA_HOME=/usr/local/java/active/apache-activemq-5.14.3
case  $1 in
     start)
         sh $CATALINA_HOME/bin/activemq start
     ;;
     stop)
         sh $CATALINA_HOME/bin/activemq stop
     ;;
     restart)
         sh $CATALINA_HOME/bin/activemq stop
         sleep 1
         sh $CATALINA_HOME/bin/activemq start
     ;;
esac
exit 0
4、对activemq文件授予权限。
chmod 777 activemq
5、设置开机启动并启动activemq
chkconfig activemq on service activemq start
5、访问地址:http://IP地址:8161/。
访问成功,ActiveMQ安装完毕。默认用户名密码为:admin/admin。
6、其他
查看activemq状态
service activemq status
其他和关闭activemq服务
service activemq start service activemq stop
设置开机启动或不启动activemq服务
chkconfig activemq on chkconfig activemq off
说明:activemq需要预先安装JDK
启动时指定日志输出文件(重要)
activemq日志默认的位置是在:%activemq安装目录%/data/activemq.log
这是我们启动时指定日志输出文件:
[root@localhost init.d]# service activemq start > /usr/local/java/active/raohao/activemq.log
我指定的日志路径
如果ip地址无法访问,请配置防火墙端口:-A INPUT -p tcp -m state --state NEW -m tcp --dport 8161 -j ACCEPT
如果该服务器同时安装了RabbitMQ,那么启动时会提示端口5672被占用,进入conf目录,打开配置文件activemq.xml文件,修改5672端口为5673.
查看进程: ps -ef | grep activemq
查看端口是否被使用: netstat -anp | grep 61616
解决问题:
(1) 系统之间接口耦合比较严重(解耦)
(2) 面对大流量并发时,容易被冲垮(消峰)
(3) 等待同步存在性能问题(异步)
MQ的主要作用
(1) 异步。调用者无需等待。
(2) 解耦。解决了系统之间耦合调用的问题。
(3) 消峰。抵御洪峰流量,保护了主业务。
大致的流程:发送者把消息发送给消息服务器,消息服务器将消息存放在若干队列/主题topic中,在合适的时候,消息服务器回将消息转发给接受者。在这个过程中,发送和接收是异步的,也就是发送无需等待,而且发送者和接受者的生命周期也没有必然的关系;尤其在发布pub/订阅sub模式下,也可以完成一对多的通信,即让一个消息有多个接受者。 MQ的缺点
两个系统之间不能同步调用,不能实时回复,不能响应某个调用的回复。
结构:
生产者:发送消息
消息队列Destination:是目的地,存储的方法:分为两种:队列消息(queue)和主题消息(topic)
消费者:消费消息
消息队列(queue):两种消费方式
同步阻塞方式(receive)
订阅者或接收者抵用MessageConsumer的receive()方法来接收消息,receive方法在能接收到消息之前(或超时之前)将一直阻塞。
异步非阻塞方式(监听器onMessage())
订阅者或接收者通过MessageConsumer的setMessageListener(MessageListener listener)注册一个消息监听器,当消息到达之后,系统会自动调用监听器MessageListener的onMessage(Message message)方法。
主题消息(topic):
发布/订阅消息传递域的特点如下:
(1)生产者将消息发布到topic中,每个消息可以有多个消费者,属于1:N的关系;
(2)生产者和消费者之间有时间上的相关性。订阅某一个主题的消费者只能消费自它订阅之后发布的消息。
(3)生产者生产时,topic不保存消息它是无状态的不落地,假如无人订阅就去生产,那就是一条废消息,所以,一般先启动消费者再启动生产者。
topic和queue对比
1. topic没有订阅者,消息将会被丢弃,如果有多个订阅者,都会收到消息
queue负载均衡模式,没有消费者,消息不回丢弃,如果有多个消费者,一条消息只会发送给其中一个消费者,并且要求消费者ack信息
2. topic无状态
queue数据默认会在mq服务器上以文件形式保存,比如active MQ一般保存在 $AMQ_HOME\data\kr_store\data下面,也可以配置成DB存储
3. 完整性,topic如果没有订阅者,消息会被丢弃
queue消息不会丢弃
4.效率 topic由于消息要按照订阅者的数量进行复制,所以处理性能会随着订阅者的增加而明显降低,并且还要结合不同消息协议自身的性能差异
queue由于一条消息只会发送一个消费者,所以就算消费者再多,性能也不会有明显降低,当然不同消息协议的具体性能也是有差异的
消息不被重复消费,幂等性
幂等性如何解决,根据messageid去查这个消息是否被消费了。
持久化机制:
生产者生产消息时设置 //开启持久化
jmsTemplate.setDeliveryMode(1); //1非持久 2为非持久化,节点挂是否保存
jmsTemplate.setTimeToLive(5000);//过期时间
//ExplicitQosEnabled服务质量开关 :如果不打开服务质量的开关,消息的递送模式、优先级和存活时间的设置就没有作用。
jmsTemplate.setExplicitQosEnabled(true);//开启过期时间,为true,时间到删除,false,不删除
jmsTemplate.setDeliveryPersistent(false); //这里的true代表放入ActiveMQ.DLQ里面
https://i.cnblogs.com/posts?pageSize=15
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号