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=""></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="" 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 表示从
activeMQ 讲解及实战的更多相关文章
- 小D课堂 - 零基础入门SpringBoot2.X到实战_第9节 SpringBoot2.x整合Redis实战_40、Redis工具类封装讲解和实战
笔记 4.Redis工具类封装讲解和实战 简介:高效开发方式 Redis工具类封装讲解和实战 1.常用客户端 https://redisdesktop.com/download ...
- Opencv+Yolov3算法实现社交距离安全检测讲解和实战(Social Distance Detector)
在我们进行交流谈话时,人与人之间总要保持一定的距离,尤其是在疫情的情况下,人与人之间更要保持一定的安全距离,今天给大家来介绍一个检测社交距离的项目,实现社交距离检测器. 社交距离(Social Dis ...
- (万字好文)Dubbo服务熔断与降级的深入讲解&代码实战
原文链接:(万字好文)Dubbo服务熔断与降级的深入讲解&代码实战 一.Dubbo服务降级实战 1 mock 机制 谈到服务降级,Dubbo 本身就提供了服务降级的机制:而 Dubbo 的服务 ...
- Android屏幕适配讲解与实战
文章大纲 一.屏幕适配是什么二. 重要概念讲解三.屏幕适配实战四.项目源码下载 一.屏幕适配是什么 Android中屏幕适配就是通过对尺寸单位.图片.文字.布局这四种类型的资源进行合理的设计和 ...
- 常用正则表达式最强汇总(含Python代码举例讲解+爬虫实战)
大家好,我是辰哥~ 本文带大家学习正则表达式,并通过python代码举例讲解常用的正则表达式 最后实战爬取小说网页:重点在于爬取的网页通过正则表达式进行解析. 正则表达式语法 Python的re模块( ...
- Java ActiveMQ 讲解(一)理解JMS 和 ActiveMQ基本使用(转)
转自:http://www.cnblogs.com/luochengqiuse/p/4678020.html?utm_source=tuicool&utm_medium=referral 最近 ...
- Java ActiveMQ 讲解(二)Spring ActiveMQ整合+注解消息监听
对于ActiveMQ消息的发送,原声的api操作繁琐,而且如果不进行二次封装,打开关闭会话以及各种创建操作也是够够的了.那么,Spring提供了一个很方便的去收发消息的框架,spring jms.整合 ...
- Java ActiveMQ 讲解(一)理解JMS 和 ActiveMQ基本使用
最近的项目中用到了mq,之前自己一直在码农一样的照葫芦画瓢.最近几天研究了下,把自己所有看下来的文档和了解总结一下. 一. 认识JMS 1.概述 对于JMS,百度百科,是这样介绍的:JMS即Java消 ...
- XGBoost、LightGBM参数讲解及实战
本文链接:https://blog.csdn.net/linxid/article/details/80785131XGBoost一.API详解xgboost.XGBClassifier1.1 参数1 ...
随机推荐
- Java异常链
是什么 一种面向对象的编程技术,将捕获到的异常重新封装到一个新的异常中,并重新抛出. 有什么用 可以保留每一层的异常信息,用户查看异常的时候,能够从顶层异常信息看到底层异常信息. 怎么用 catch异 ...
- 串口UART学习笔记(一)
买了一个开发板学习FPGA,找到的各种东西就记录在这个博客里了,同时也方便把自己不会的问题找到的结果记录一下,都是自己手打,所以可能说的话不那么严谨,不那么精准,看到的人要带着自己的思考去看,记住尽信 ...
- LeetCode初级算法的Python实现--链表
LeetCode初级算法的Python实现--链表 之前没有接触过Python编写的链表,所以这里记录一下思路.这里前面的代码是和leetcode中的一样,因为做题需要调用,所以下面会给出. 首先定义 ...
- java四种访问权限
java有四种访问权限,它们各自的范围如下图所示 当下列访问修饰符修饰字段和方法时: private 任意位置的子类不可以访问从父类继承的private字段和方法.这里所说的访问包括通过super关键 ...
- 堪称最好的A*算法(转)
如此好贴,不能不转!原文地址:http://dev.gameres.com/Program/Abstract/Arithmetic/AmitAStar.mht 中文译文转自:http://blog.c ...
- 苏州Uber优步司机奖励政策(8月31日至9月6日)
当周最新司机奖励(8月31日至9月6日) 滴滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http: ...
- React-精华版
现在最热门的前端框架有AngularJS.React.Bootstrap等.自从接触了ReactJS,ReactJs的虚拟DOM(Virtual DOM)和组件化的开发深深的吸引了我,下面来跟我一起领 ...
- zedboard学习第一篇
1. 刚开始学习使用,不知道从哪里开始,手上的资料也很乱,至于这个板子需要学什么也不清楚. 2. 第一个工程就从helloworld开始吧,Zed板上的Zynq是一个PS(processing sys ...
- 解决美图看看不出现在“Open with”的子菜单中的问题
最近由于特殊需求,要使用美图看看,Win10系统,美图看看工作倒也正常,但出现一个比较郁闷的情况,就是只能在“Open with”的最下面一个子菜单中选择“Choose another app”,然后 ...
- nested class 例子
#include<iostream> using namespace std; /* start of Enclosing class declaration */ class Enclo ...