activemq管理

来源:互联网 发布:壳氏唯切菜板知乎 编辑:程序博客网 时间:2024/06/05 20:21
ActiveMQ默认启动时,启动了内置的jetty服务器,提供一个用于监控ActiveMQ的admin应用。
http://192.168.1.9:8161,用户名和密码都是admin,可以编辑../conf/jetty.xml,用户名/密码是在 ../conf/jetty-realm.properties 
注:生产环境中,可能会对activemq的jvm内存设置上限,可以直接修改bin/activemq启动脚本,vi bin/activemq 找到下面的位置:ACTIVEMQ_OPTS="-server -Xms512M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M "设置ACTIVEMQ_OPTS即可,然后重启activemq,建议启动成功后,用jinfo {activemq的pid} 来验证查看一下 
消息的自动确认与手动确认在接收消息时,如果Session使用的是Session.AUTO_ACKNOWLEDGE,即:Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);则消息一旦被接受,不论onMessage()里的业务逻辑执行成功与否,消息都将从ActiveMQ的队列里立刻删除。如果希望业务处理成功后,再通知ActiveMQ删除消息,可以改成:Session session = connection.createSession(false, Session.CLIENT_ACKNOWLEDGE);然后onMessage方法调用message.acknowledge手动确认,参考以下代码:class ActiveMQListener implements MessageListener {@Overridepublic void onMessage(Message message) {try {if (message instanceof TextMessage) {System.out.println(((TextMessage) message).getText());message.acknowledge(); //手动确认消息}} catch (JMSException e) {e.printStackTrace();}}}
连接ActiveMQ默认情况下,没有任何安全机制,也就是说任何人只要知道brokerURL都能连接,这显然不安全,可以在activemq.xml里,找到<broker>节点,紧贴它的地方添加下面这段:<broker xmlns="http://activemq.apache.org/schema/core" brokerName="localhost" dataDirectory="${activemq.data}">
<plugins><simpleAuthenticationPlugin><users>    <authenticationUser username="${activemq.username}" password="${activemq.password}" groups="users,admins"/></users></simpleAuthenticationPlugin></plugins>...</broker>
那么问题来了,这个activemq.username及{activemq.password}的值是在哪里定义的呢?仍然在activemq.xml里找答案,在最开始的地方有一段:<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"><property name="locations"><value>file:${activemq.conf}/credentials.properties</value></property></bean>换句话说,conf/credentials.properties这里保存的就是连接activemq的用户名和密码,启用连接的安全机制后,spring的配置文件要做如下调整:<bean id="jmsFactory" class="org.apache.activemq.pool.PooledConnectionFactory" destroy-method="stop"><property name="connectionFactory"><bean class="org.apache.activemq.ActiveMQConnectionFactory"><!--broker服务的地址--><property name="brokerURL" value="tcp://localhost:61616"/><!--默认值为1000,如果不需要这么大,可以调小--><property name="maxThreadPoolSize" value="100"/><property name="userName" value="system"/><property name="password" value="manager"/></bean></property></bean>

0 0
原创粉丝点击