Apache ActiveMQ单点基本配置
来源:互联网 发布:windows优化大师 win8 编辑:程序博客网 时间:2024/06/05 23:52
activemq.bat:
@echo offREM ------------------------------------------------------------------------REM Licensed to the Apache Software Foundation (ASF) under one or moreREM contributor license agreements. See the NOTICE file distributed withREM this work for additional information regarding copyright ownership.REM The ASF licenses this file to You under the Apache License, Version 2.0REM (the "License"); you may not use this file except in compliance withREM the License. You may obtain a copy of the License atREMREM http://www.apache.org/licenses/LICENSE-2.0REMREM Unless required by applicable law or agreed to in writing, softwareREM distributed under the License is distributed on an "AS IS" BASIS,REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.REM See the License for the specific language governing permissions andREM limitations under the License.REM ------------------------------------------------------------------------set JAVA_HOME=E:\Jason\jdk1.6.0_43if exist "%HOME%\activemqrc_pre.bat" call "%HOME%\activemqrc_pre.bat"if "%OS%"=="Windows_NT" @setlocalrem %~dp0 is expanded pathname of the current script under NTset DEFAULT_ACTIVEMQ_HOME=%~dp0..if "%ACTIVEMQ_HOME%"=="" set ACTIVEMQ_HOME=%DEFAULT_ACTIVEMQ_HOME%set DEFAULT_ACTIVEMQ_HOME=:doneStartrem find ACTIVEMQ_HOME if it does not exist due to either an invalid value passedrem by the user or the %0 problem on Windows 9xif exist "%ACTIVEMQ_HOME%\README.txt" goto checkJavarem check for activemq in Program Files on system driveif not exist "%SystemDrive%\Program Files\activemq" goto checkSystemDriveset ACTIVEMQ_HOME=%SystemDrive%\Program Files\activemqgoto checkJava:checkSystemDriverem check for activemq in root directory of system driveif not exist %SystemDrive%\activemq\README.txt goto checkCDriveset ACTIVEMQ_HOME=%SystemDrive%\activemqgoto checkJava:checkCDriverem check for activemq in C:\activemq for Win9X usersif not exist C:\activemq\README.txt goto noAntHomeset ACTIVEMQ_HOME=C:\activemqgoto checkJava:noAntHomeecho ACTIVEMQ_HOME is set incorrectly or activemq could not be located. Please set ACTIVEMQ_HOME.goto end:checkJavaset _JAVACMD=%JAVACMD%if "%JAVA_HOME%" == "" goto noJavaHomeif not exist "%JAVA_HOME%\bin\amq_test.exe" goto noJavaHomeif "%_JAVACMD%" == "" set _JAVACMD=%JAVA_HOME%\bin\amq_test.exegoto runAnt:noJavaHomeif "%_JAVACMD%" == "" set _JAVACMD=amq_test.exeecho.echo Warning: JAVA_HOME environment variable is not set.echo.:runAntif "%ACTIVEMQ_BASE%" == "" set ACTIVEMQ_BASE=%ACTIVEMQ_HOME%if "%ACTIVEMQ_CONF%" == "" set ACTIVEMQ_CONF=%ACTIVEMQ_HOME%\confif "%ACTIVEMQ_DATA%" == "" set ACTIVEMQ_DATA=%ACTIVEMQ_HOME%\dataif "%ACTIVEMQ_TMP%" == "" set ACTIVEMQ_TMP=%ACTIVEMQ_DATA%\tmpif "%ACTIVEMQ_OPTS%" == "" set ACTIVEMQ_OPTS=-Xms1500M -Xmx1500M -Xss256K -Djava.util.logging.config.file=logging.properties -Dorg.apache.activema.UseDedicatedTaskRunner=falseif "%SUNJMX%" == "" set SUNJMX=-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=falseREM set SUNJMX=-Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=falseREM Uncomment to enable YourKit profilingREM SET ACTIVEMQ_DEBUG_OPTS="-agentlib:yjpagent"REM Uncomment to enable remote debuggingREM SET ACTIVEMQ_DEBUG_OPTS=-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005REM Setup ActiveMQ Classpath.REM Add instance conf dir before AMQ install conf dir to pick up instance-specific classpath entries firstset ACTIVEMQ_CLASSPATH=%ACTIVEMQ_CONF%;%ACTIVEMQ_BASE%/conf;%ACTIVEMQ_HOME%/conf;%ACTIVEMQ_CLASSPATH%"%_JAVACMD%" %SUNJMX% %ACTIVEMQ_DEBUG_OPTS% %ACTIVEMQ_OPTS% %SSL_OPTS% -Dactivemq.classpath="%ACTIVEMQ_CLASSPATH%" -Dactivemq.home="%ACTIVEMQ_HOME%" -Dactivemq.base="%ACTIVEMQ_BASE%" -Dactivemq.conf="%ACTIVEMQ_CONF%" -Dactivemq.data="%ACTIVEMQ_DATA%" -Djava.io.tmpdir="%ACTIVEMQ_TMP%" -jar "%ACTIVEMQ_HOME%/bin/activemq.jar" start %*goto end:endset _JAVACMD=if "%OS%"=="Windows_NT" @endlocal:mainEndif exist "%HOME%\activemqrc_post.bat" call "%HOME%\activemqrc_post.bat"
activemq.xml:
<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.--><!-- START SNIPPET: example --><beans xmlns="http://www.springframework.org/schema/beans" xmlns:amq="http://activemq.apache.org/schema/core" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd"> <!-- Allows us to use system properties as variables in this configuration file --> <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <value>file:${activemq.conf}/credentials.properties</value> </property> </bean> <!-- The <broker> element is used to configure the ActiveMQ broker. --> <broker xmlns="http://activemq.apache.org/schema/core" brokerName="localhost" dataDirectory="${activemq.data}"> <!-- For better performances use VM cursor and small memory limit. For more information, see: http://activemq.apache.org/message-cursors.html Also, if your producer is "hanging", it's probably due to producer flow control. For more information, see: http://activemq.apache.org/producer-flow-control.html --> <destinationPolicy> <policyMap> <policyEntries> <policyEntry topic=">" producerFlowControl="true"> <!-- The constantPendingMessageLimitStrategy is used to prevent slow topic consumers to block producers and affect other consumers by limiting the number of messages that are retained For more information, see: http://activemq.apache.org/slow-consumer-handling.html --> <pendingMessageLimitStrategy> <constantPendingMessageLimitStrategy limit="1000"/> </pendingMessageLimitStrategy> </policyEntry> <policyEntry queue=">" producerFlowControl="false" memoryLimit="20mb" > <!-- Use VM cursor for better latency For more information, see: http://activemq.apache.org/message-cursors.html <pendingQueuePolicy> <vmQueueCursor/> </pendingQueuePolicy> --> </policyEntry> </policyEntries> </policyMap> </destinationPolicy> <!-- The managementContext is used to configure how ActiveMQ is exposed in JMX. By default, ActiveMQ uses the MBean server that is started by the JVM. For more information, see: http://activemq.apache.org/jmx.html --> <managementContext> <managementContext createConnector="false"/> </managementContext> <!-- Configure message persistence for the broker. The default persistence mechanism is the KahaDB store (identified by the kahaDB tag). For more information, see: http://activemq.apache.org/persistence.html --> <persistenceAdapter> <kahaDB directory="${activemq.data}/kahadb"enableIndexWriteAsync="true"enableJournalDiskSyncs="false"/><!--<amqPersistenceAdapter directory="${activemq.data}/activemq-data" /> --> </persistenceAdapter> <!-- The systemUsage controls the maximum amount of space the broker will use before slowing down producers. For more information, see: http://activemq.apache.org/producer-flow-control.html If using ActiveMQ embedded - the following limits could safely be used: <systemUsage> <systemUsage> <memoryUsage> <memoryUsage limit="20 mb"/> </memoryUsage> <storeUsage> <storeUsage limit="1 gb"/> </storeUsage> <tempUsage> <tempUsage limit="100 mb"/> </tempUsage> </systemUsage> </systemUsage> --> <systemUsage> <systemUsage> <memoryUsage> <memoryUsage limit="1400 mb"/> </memoryUsage> <storeUsage> <storeUsage limit="100 gb"/> </storeUsage> <tempUsage> <tempUsage limit="50 gb"/> </tempUsage> </systemUsage> </systemUsage> <!-- The transport connectors expose ActiveMQ over a given protocol to clients and other brokers. For more information, see: http://activemq.apache.org/configuring-transports.html --> <transportConnectors> <!-- DOS protection, limit concurrent connections to 1000 and frame size to 100MB --> <transportConnector name="openwire" uri="nio://0.0.0.0:61616?maximumConnections=1000&wireformat.maxFrameSize=104857600"/> <transportConnector name="amqp" uri="amqp://0.0.0.0:5672?maximumConnections=1000&wireformat.maxFrameSize=104857600"/> </transportConnectors> <!-- destroy the spring context on shutdown to stop jetty --> <shutdownHooks> <bean xmlns="http://www.springframework.org/schema/beans" class="org.apache.activemq.hooks.SpringContextHook" /> </shutdownHooks> </broker> <!-- Enable web consoles, REST and Ajax APIs and demos Take a look at ${ACTIVEMQ_HOME}/conf/jetty.xml for more details --> <import resource="jetty.xml"/></beans><!-- END SNIPPET: example -->
Producer for java:
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.0.87:61616?wireFormat.maxInactivityDuration=0");Session session = connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE);Queue queue = session.createQueue(qName);ActiveMQMessageProducer producer = (ActiveMQMessageProducer) session.createProducer(queue); // Default DeliveryMode.PERSISTENT//producer.setPriority(3); // Default priority 4.//producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);session.createObjectMessage();jmsMessage.setObject(message);producer.send(jmsMessage);
Consumer for java:
final String qName = "Test.foo?consumer.prefetchSize=100";ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.0.87:61616"); Connection connection = connectionFactory.createConnection();connection.start();final Session session = connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE); Destination destination = session.createQueue(qName);ActiveMQMessageConsumer consumer = (ActiveMQMessageConsumer) session.createConsumer(destination);System.out.println(consumer.getPrefetchNumber());//listener 方式 consumer.setMessageListener(new MessageListener() { public void onMessage(Message msg) { //TODO something.... try {System.out.println("收到消息:"+counter.incrementAndGet()+","+msg);} catch (JMSException e1) {// TODO Auto-generated catch blocke1.printStackTrace();} } });
服务器设备配置:
os:windows 2003 r2
vm:4G
cpu:2 core 2,8ghz
硬盘:SCSI 80G 10000rpm
内网百兆网卡
客户端设备配置:
普通PC, windows xp系统
测得结果:
1、消息大小1K、非事务、持久化消息,服务器端采用NIO:
单个连接 500个消息/sec,2个连接 1000个消息/sec,服务器端系统资源很稳定。
2、消息大小1K、非事务、非持久化消息,服务器端采用NIO:
单个连接2000+个消息/sec,CPU占用较高,内存回收稳定,受理的消息占用内存超过jvm给定内存后,AMQ不报异常也不会终止程序,但会导致消息丢失,内存回收频率升高。
控制台:
http://192.168.0.87:8161/admin/queues.jsp
参考资源:
http://activemq.apache.org/cms/configuring.html
http://www.cnblogs.com/zhishan/archive/2013/04/01/2993334.html
http://activemq.apache.org/maven/apidocs/index.html
0 0
- Apache ActiveMQ单点基本配置
- Apache ActiveMQ 单点集群配置方法
- Apache ActiveMQ实战(1)-基本安装配置与消息类型
- Apache ActiveMQ实战(1)-基本安装配置与消息类型
- Apache ActiveMQ实战(1)-基本安装配置与消息类型
- Apache ActiveMQ实战(1)-基本安装配置与消息类型
- Apache ActiveMQ实战(1)-基本安装配置与消息类型
- Apache ActiveMQ实战(1)-基本安装配置与消息类型
- Apache ActiveMQ配置
- ActiveMQ基本配置
- ActiveMQ基本配置
- ActiveMQ基本配置
- Apache ActiveMQ 集群配置方法
- Apache ActiveMQ 集群配置方法
- apache和tomcat单点配置
- Apache ActiveMQ消息中间件的基本使用
- Apache ActiveMQ消息中间件的基本使用
- Apache ActiveMQ消息中间件的基本使用
- FreeBSD带有许多简单而功能强大的命令
- MRC转ARC注意事项和存在的问题
- SendMessage用法
- eclipse启动或者运行过程中tomcat出现内存溢出错误 java.lang.OutOfMemoryError: PermGen space
- Tomcat配置虚拟目录流程
- Apache ActiveMQ单点基本配置
- 关于STM32的CAN的过滤器
- 从HSPICE代码修改的PSPICE忆阻器仿真的一个简单实验
- 1月13号,支付宝余额宝内支入4000,看看两个周以后会有什么变化的?
- ]IOS开发之----远程推送通知
- WPF好文分享
- Linux系统下进程内存映像信息的理解:
- 求无向无权图起点到终点的所有路径
- warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8): No such file or directory