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里面
JMS 可靠性:Persistent 持久性 、 事务 、Acknowledge 签收(俗称ack)
 

 https://i.cnblogs.com/posts?pageSize=15

posted @ 2021-04-15 15:30  心愿路自平  阅读(268)  评论(0)    收藏  举报