A. まず、ActiveMQの話では、Linuxにインストール:
インストールパッケージをダウンロードします。1.:
ダウンロード:apacheの-ActiveMQの-5.14.0-bin.tar.gz
住所:http://activemq.apache.org/activemq-5140-release.html
2.仮想マシンにLinuxをインストールします。
1は、GZファイルは、/ usr / local / srcディレクトリにコピーされます
2.エキス起動します。
タール-zxvfのapache-ActiveMQの-5.14.0-bin.tar.gz
ActiveMQの開始後のbinディレクトリを抽出するために、CDのapache-ActiveMQの-5.14.0 / binに--->
アイコンを開始startと:
ActiveMQの開始の指定ポートかどうかを確認します。
netstatの-anp | grepを61616アイコン:
閉じる./activemq開始
3. ファイアウォールポートを開きます
参考文献:1.編集/ etc / sysconfig / iptablesファイル:VI、/ etc / sysconfig / iptables内 そして、コンテンツの中に保存された:-A RH-Firewallの-1-INPUT -m状態--state NEW -m tcpの-p TCP --dport 8080 -j ACCEPTは、 2.サービスを再起動:/etc/init.d/iptables再起動 ポートが開いているかどうか3.チェックします。/ sbin / iptablesの-L -n
4、Webページの管理を開きます
パスワードを変更する必要がある場合は、変更したコンフィギュレーションファイルのconf / jetty-realm.propertiesに行きます
5. [セキュリティの構成
<プラグイン> <simpleAuthenticationPlugin> <ユーザー> <authenticationUserユーザ名= "sunkukong" パスワード= "123123" groups="users,admins"/> //username和password自定义
</users> </simpleAuthenticationPlugin> </plugins>
或者在程序代码中添加配置文件
二.ActiveMQ的概述:
ActiveMQ 是由 Apache 出品的一款开源的,基于java中的JMS消息服务规范实现的一个消息中间件,旨在为应用程序提供高效,可拓展稳定,安全的企业级消息通信。设计目的是提供标准的,面向消息的,多语言的应用集成消息通信中间件.
三.ActiveMQ的消息传送模型
(1)点对点模型(Point to Point)
使用队列作为(Queue)作为消息通信载体,满足消费者和生产者模式,一条消息只能被一个消费者使用,消息保证送达,离线消费者可以在下次登录时接收到积压的消息
(2)发布订阅模型(Publish/Subscribe)
使用主题作为消息通信载体 (可能会造成部分消息的丢失)
<1>普通订阅:当前有几个消费者在线就发送几条消息给客户端
<2>持久化订阅:区分消费者:消费者在线则直接发送消息给在线客户端,消费者不在线只要有topic登记,那么就会为其保留数据直至其登陆一次性把积压数据推送过去。
四.ActiveMQ的优势:
(1)解耦合:上层发布者不需要关心下层被调用着的使用
(2)异步调用:各个微服务调用所需要的时间不同(即时效性不一致),使用MQ的异步调用合理使用
(3)流量削峰:大型数据访问(高并发状态下),使用消息中间件,超出消息中间件设置的访问数量就会被阻挡排队等候,减小了服务器的压力
五.ActiveMQ解决分布式事务:
举例: 互联网应用中,基本都会有用户注册的功能,注册的时候会进行以下操作:
1.收集用户信息,保存到数据库
2.向用户的手机或者邮箱发送验证码
解决方式:
(1)传统的集中式框架: 开启一个本地事务,在本地数据库中插入一条用户数据,发送验证码提交事务。
(2)分布式架构中:用户注册和验证码是俩个独立的服务,它们都有各自数据库,那么就不能使用本地事务保证操作的原子性,这时就需要ActiveMq(消息队列)来实现我们的需求
在用户进行操作的时候,我们为该操作创建一条数据,当用户消息保存成功时,把这条消息发送到消息队列,验证码系统会监听消息,一旦接收到消息,就会给用户发送验证码。
产生问题:
如何防止消息重复发送???
答: 解决方法很简单,增加消息状态表,通俗来说就是一个账本,用来记录消息的处理状态,每次处理消息之前,都会去状态表中查询一次,如果已经有相同的消息存在,那么不处理,可以防止消息重复发送。
六.了解哪些消息队列?
ActiveMq,RabbitMQ,kafka。
七.ActiveMQ 如果消息发送失败怎么办?
2,为什么要用消息队列
主要有两点好处:
通过异步处理提高系统性能(削峰,减少系统响应时间):消息队列具有很好的削峰作用功能,即通过异步处理,将短时间高并发产生的事务消息存储到消息队列中,从而削平高峰时期的并发事务。
降低系统耦合性
3,消息队列带来了哪些问题
1,系统可用性降低
2,系统复杂性提高
3,一致性问题