I'm trying to get a simple broker working that never stores messages. I want it to send the messages immediately and if a message cannot be send to trash it.
I had a solution I thought was working but then the server ran out of memory and it died. I think perhaps some messages that cannot be delivered are being stored in memory now? Can someone take a look at my config file and the log file and let me know what I'm doing wrong? ACTIVEMQ.XML ------------------------------------------ <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-2.0.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.base}/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.base}/data" destroyApplicationContextOnStop="true" advisorySupport="false" useJmx="false" schedulerSupport="false" persistent="false" > <!-- 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="false"> <dispatchPolicy> <strictOrderDispatchPolicy /> </dispatchPolicy> <messageEvictionStrategy> <oldestMessageEvictionStrategy/> </messageEvictionStrategy> <pendingMessageLimitStrategy> <constantPendingMessageLimitStrategy limit="10"/> </pendingMessageLimitStrategy> <subscriptionRecoveryPolicy> <lastImageSubscriptionRecoveryPolicy /> </subscriptionRecoveryPolicy> </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.base}/data/kahadb"/> </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 <systemUsage> <systemUsage> <memoryUsage> <memoryUsage limit="20 mb"/> </memoryUsage> <storeUsage> <storeUsage limit="1 gb"/> </storeUsage> <tempUsage> <tempUsage limit="100 mb"/> </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> <transportConnector name="openwire" uri="tcp://0.0.0.0:61616?wireFormat.maxInactivityDuration=0"/> </transportConnectors> </broker> <!-- Uncomment to enable Camel Take a look at activemq-camel.xml for more details <import resource="camel.xml"/> --> <!-- Enable web consoles, REST and Ajax APIs and demos Take a look at activemq-jetty.xml for more details --> <import resource="jetty.xml"/> </beans> ------------------------------------------------- The whole log might be a bit big to post, but there are a few things that look interesting: Lots of these errors: 2010-11-29 13:16:57,595 | INFO | Transport failed: java.net.SocketException: Connection reset | org.apache.activemq.broker.TransportConnection.Transport | ActiveMQ Transport: tcp:///10.13.12.1:53807 java.net.SocketException: Connection reset at java.net.SocketInputStream.read(Unknown Source) at org.apache.activemq.transport.tcp.TcpBufferedInputStream.fill(TcpBufferedInputStream.java:50) at org.apache.activemq.transport.tcp.TcpTransport$2.fill(TcpTransport.java:575) at org.apache.activemq.transport.tcp.TcpBufferedInputStream.read(TcpBufferedInputStream.java:58) at org.apache.activemq.transport.tcp.TcpTransport$2.read(TcpTransport.java:560) at java.io.DataInputStream.readInt(Unknown Source) at org.apache.activemq.openwire.OpenWireFormat.unmarshal(OpenWireFormat.java:269) at org.apache.activemq.transport.tcp.TcpTransport.readCommand(TcpTransport.java:226) at org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:218) at org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:201) at java.lang.Thread.run(Unknown Source) And these: 2010-11-29 14:29:30,678 | INFO | Transport failed: java.net.SocketException: Connection reset | org.apache.activemq.broker.TransportConnection.Transport | ActiveMQ Transport: tcp:///10.13.12.122:1989 java.net.SocketException: Connection reset at java.net.SocketInputStream.read(Unknown Source) at org.apache.activemq.transport.tcp.TcpBufferedInputStream.fill(TcpBufferedInputStream.java:50) at org.apache.activemq.transport.tcp.TcpTransport$2.fill(TcpTransport.java:575) at org.apache.activemq.transport.tcp.TcpBufferedInputStream.read(TcpBufferedInputStream.java:58) at org.apache.activemq.transport.tcp.TcpTransport$2.read(TcpTransport.java:560) at java.io.DataInputStream.readInt(Unknown Source) at org.apache.activemq.openwire.OpenWireFormat.unmarshal(OpenWireFormat.java:269) at org.apache.activemq.transport.tcp.TcpTransport.readCommand(TcpTransport.java:226) at org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:218) at org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:201) at java.lang.Thread.run(Unknown Source) Only one of these in aprox a week: 2010-11-22 15:26:00,116 | INFO | Slow KahaDB access: cleanup took 998 | org.apache.activemq.store.kahadb.MessageDatabase | ActiveMQ Journal Checkpoint Worker And finally this error but I assume this has to do with my machine running out of memory because this only started happening near the end: 2010-11-30 04:42:22,922 | INFO | Transport failed: org.apache.activemq.transport.InactivityIOException: Channel was inactive for too long: /fe80:0:0:0:6980:d333:ab7e:88df:50689 | org.apache.activemq.broker.TransportConnection.Transport | Async Exception Handler org.apache.activemq.transport.InactivityIOException: Channel was inactive for too long: /fe80:0:0:0:6980:d333:ab7e:88df:50689 at org.apache.activemq.transport.InactivityMonitor.oneway(InactivityMonitor.java:247) at org.apache.activemq.transport.TransportFilter.oneway(TransportFilter.java:85) at org.apache.activemq.transport.WireFormatNegotiator.oneway(WireFormatNegotiator.java:104) at org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:40) at org.apache.activemq.broker.TransportConnection.dispatch(TransportConnection.java:1247) at org.apache.activemq.broker.TransportConnection.processDispatch(TransportConnection.java:808) at org.apache.activemq.broker.TransportConnection.iterate(TransportConnection.java:844) at org.apache.activemq.thread.DedicatedTaskRunner.runTask(DedicatedTaskRunner.java:98) at org.apache.activemq.thread.DedicatedTaskRunner$1.run(DedicatedTaskRunner.java:36) 2010-11-30 04:42:29,240 | INFO | Transport failed: java.io.IOException: Wire format negotiation timeout: peer did not send his wire format. | org.apache.activemq.broker.TransportConnection.Transport | Async Exception Handler java.io.IOException: Wire format negotiation timeout: peer did not send his wire format. at org.apache.activemq.transport.WireFormatNegotiator.oneway(WireFormatNegotiator.java:98) at org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:40) at org.apache.activemq.broker.TransportConnection.dispatch(TransportConnection.java:1247) at org.apache.activemq.broker.TransportConnection.processDispatch(TransportConnection.java:808) at org.apache.activemq.broker.TransportConnection.iterate(TransportConnection.java:844) at org.apache.activemq.thread.DedicatedTaskRunner.runTask(DedicatedTaskRunner.java:98) at org.apache.activemq.thread.DedicatedTaskRunner$1.run(DedicatedTaskRunner.java:36) I have many publishers sending to this one server, and many listeners connecting as well. The clients are all .NET using NMS. I tried unsuccessfully to connect to it using Jconsole to see what was going on. (yes I enabled it in the config file but jconsole couldn't see it when I did service:jmx:rmi:///jndi/rmi://localhost:1616/jmxrmi . Never used jconsole before so I'm probably just not putting the parameters in right or something. Sorry for the huge post, but I thought it was best to provide as much info as possible. Please let me know what you think. -- View this message in context: http://activemq.2283324.n4.nabble.com/Problems-with-simple-broker-and-no-persistence-tp3065608p3065608.html Sent from the ActiveMQ - User mailing list archive at Nabble.com.