㈠ 用java代码如何设置activemq消息持久化到数据库中
ActiveMQ持久化消息的二种方式;
1、持久化为文件
这个装ActiveMQ时默认就是这种,只要设置消息为持久化就可以了。涉及到的配置和代码有:
<persistenceAdapter>
<kahaDB directory="${activemq.base}/data/kahadb"/>
</persistenceAdapter>
procer.Send(request, MsgDeliveryMode.Persistent, level, TimeSpan.MinValue);
2、持久化为MySql
首先需要把MySql的驱动放到ActiveMQ的Lib目录下,我用的文件名字是:mysql-connector-java-5.0.4-bin.jar
接下来修改配置文件
<persistenceAdapter>
<jdbcPersistenceAdapter dataDirectory="${activemq.base}/data" dataSource="#derby-ds"/>
</persistenceAdapter>
在配置文件中的broker节点外增加
<bean id="derby-ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost/activemq?relaxAutoCommit=true"/>
<property name="username" value="activemq"/>
<property name="password" value="activemq"/>
<property name="maxActive" value="200"/>
<property name="poolPreparedStatements" value="true"/>
</bean>
从配置中可以看出数据库的名称是activemq,需要手动在MySql中增加这个库。
然后重新启动消息队列,会发现多了3张表
1:activemq_acks
2:activemq_lock
3:activemq_msgs
㈡ 如何在linux上配置activemq集群
配置ActiveMQ的集群需要修改conf目录下的activemq.xml
具体信息
配置方式:Master-Slave方式
对于ActiveMQ有两种运行方式,一种是放入lib,和web应用一同启动,另外一种是作为单独的mq服务器运行,因为涉及了cluster,我们采用了单独运行的配置。
下载并解压后
我们进入activeMq目录。
进入%ActiveMQ%/bin
选择启动activemq.bat
如果启动过程中没有出现错误,我们就可以进行其他的配置。
配置文件的位置在%ActiveMQ%/conf中
编写测试程序:一个用来发送Message,一个用来接收Message
配置文件
修改conf目录下的activemq.xml文件
name="host61616" uri="static://(tcp://192.168.180.69:61616,tcp://192.168.180.69:11616)" />
name="host11616" uri="static://(tcp://192.168.180.69:61616,tcp://192.168.180.69:11616)" />
具体看http://embed.21ic.com/了解
㈢ c++ activemq start失败
原因及解决方法:
1、主机hostname有非法字符
修改主机hostname的时候,不小心写入了非法字符,如下划线“_”,导致服务启动失败。
解决:修改hostname就可以了。
修改hostname的方法:
1、方法一hostnamectl命令修改,不需要重启新开一个窗口就生效。
语法: hostnamectl set-hostname 新主机名。
2、方法二:修改配置文件 /etc/hostname 保存退出。
修改完成之后需要重启生效。
3、方法三:临时修改主机名。
hostname 新主机名。
hostname命名规则可参考:
https://en.wikipedia.org/wiki/Hostname
2、配置文件IP配置不正确。
配置文件conf/activemq.xml文件IP配置不正确,activemq启动失败。
解决:IP修改正确就好了。
不过网上也帖子提到关于“Cannot assign requested address”报错的其他原因和解决方法:
1、/etc/hosts解析异常,不能解析本机IP,需手动添加 127.0.0.1 localhost。
2、/etc/hosts文件权限异常,修改为644。
㈣ activemq 一台服务器如何配置多个broker
步骤如下:
1、把整个conf文件夹复制一份,比如叫conf2
2、修改里面的activemq.xml文件
①brokerName不能和原来的重复
②数据存放的文件名称不能重复,比如<kahaDB directory = "${activemq.data}/kahadb2"/>
③所有涉及的transportConnector的端口,都要和原来的不一样。注意不要超出端口的范围(0-65535)
3、修改jetty.xml,把里面的默认端口号8161改成别的,不如9161
4、到bin下面,复制一个activemq,比如叫activemq2
①修改程序的id,不能和原来的重复,ACTIVEMQ_PIDFILE="$ACTIVEMQ_DATA/activemq2.pid"
②修改配置文件路径ACTIVEMQ_CONF="$ACTIVEMQ_BASE/conf2"
③修改端口,tcp://localhost:61616把61616改成和activemq.xml里面的tcp端口一致。请注意,在activemq5.9.0版本中是这么修改。但我使用的是最新的5.12.1版本,在activemq中找不到该tcp端口的配置,折腾了半天才发现该版本把这个配置挪到了env文件。所以就需要拷贝一份env,比如就叫env2吧,然后再env2里面把61616改成和activemq.xml里面的tcp端口一致。最后别忘了把activemq2里面对env的引用改成env2。ACTIVEMQ_CONFIGS="/etc/default/activemq $HOME/.activemqrc $ACTIVEMQ_HOME/bin/env2"
现在你可以到activemq的bin目录下分别执行./activemq start 和 ./activemq2 start 了。这两个broker服务应该能正常启动了。