You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@activemq.apache.org by Kalv <ka...@kalv.co.uk> on 2006/05/04 10:58:25 UTC

MySql Persistence Problem

Hi all, I'm new to Activemq and i am having quite a few problems, but this is
the main one at the moment that i am trying to fix.

I have both RC2 and the latest Incubator release. Consumption of a queue
works fine when using the default derby and def journal settings. I change
the settings to use a mysql backend. It works fine when producing and
consuming some messages. I then stop the consumer let the queue grow. Then
stop activemq, Start it up again expecting the queue to be still there which
it is but i try to consume it i get an exception:

java.io.EOFException
        at java.io.DataInputStream.readFully(DataInputStream.java:178)
        at java.io.DataInputStream.readFully(DataInputStream.java:152)
        at
org.apache.activemq.openwire.v1.BaseDataStreamMarshaller.looseUnmarshalByteSequence(BaseDataStreamMarshaller.java:599)
        at
org.apache.activemq.openwire.v1.MessageMarshaller.looseUnmarshal(MessageMarshaller.java:204)
        at
org.apache.activemq.openwire.v1.ActiveMQMessageMarshaller.looseUnmarshal(ActiveMQMessageMarshaller.java:100)
        at
org.apache.activemq.openwire.v1.ActiveMQTextMessageMarshaller.looseUnmarshal(ActiveMQTextMessageMarshaller.java:100)
        at
org.apache.activemq.openwire.OpenWireFormat.doUnmarshal(OpenWireFormat.java:348)
        at
org.apache.activemq.openwire.OpenWireFormat.unmarshal(OpenWireFormat.java:210)
        at
org.apache.activemq.store.jdbc.JDBCMessageStore$1.recoverMessage(JDBCMessageStore.java:155)
        at
org.apache.activemq.store.jdbc.adapter.DefaultJDBCAdapter.doRecover(DefaultJDBCAdapter.java:338)
        at
org.apache.activemq.store.jdbc.JDBCMessageStore.recover(JDBCMessageStore.java:153)
        at
org.apache.activemq.store.journal.JournalMessageStore.recover(JournalMessageStore.java:342)
        at org.apache.activemq.broker.region.Queue.<init>(Queue.java:97)
        at
org.apache.activemq.broker.region.QueueRegion.createDestination(QueueRegion.java:58)
        at
org.apache.activemq.broker.jmx.ManagedQueueRegion.createDestination(ManagedQueueRegion.java:56)
        at
org.apache.activemq.broker.region.AbstractRegion.addDestination(AbstractRegion.java:77)
        at
org.apache.activemq.broker.region.RegionBroker.addDestination(RegionBroker.java:217)
        at
org.apache.activemq.broker.BrokerFilter.addDestination(BrokerFilter.java:129)
        at
org.apache.activemq.advisory.AdvisoryBroker.addDestination(AdvisoryBroker.java:141)
        at
org.apache.activemq.broker.BrokerFilter.addDestination(BrokerFilter.java:129)
        at
org.apache.activemq.broker.MutableBrokerFilter.addDestination(MutableBrokerFilter.java:142)
        at
org.apache.activemq.broker.region.AbstractRegion.addConsumer(AbstractRegion.java:161)
        at
org.apache.activemq.broker.region.RegionBroker.addConsumer(RegionBroker.java:293)
        at
org.apache.activemq.broker.BrokerFilter.addConsumer(BrokerFilter.java:73)
        at
org.apache.activemq.advisory.AdvisoryBroker.addConsumer(AdvisoryBroker.java:77)
        at
org.apache.activemq.broker.BrokerFilter.addConsumer(BrokerFilter.java:73)
        at
org.apache.activemq.broker.MutableBrokerFilter.addConsumer(MutableBrokerFilter.java:86)
        at
org.apache.activemq.broker.AbstractConnection.processAddConsumer(AbstractConnection.java:428)
        at
org.apache.activemq.command.ConsumerInfo.visit(ConsumerInfo.java:295)
        at
org.apache.activemq.broker.AbstractConnection.service(AbstractConnection.java:202)
        at
org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:62)
        at
org.apache.activemq.transport.ResponseCorrelator.onCommand(ResponseCorrelator.java:97)
        at
org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.java:63)
        at
org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:114)
        at
org.apache.activemq.transport.InactivityMonitor.onCommand(InactivityMonitor.java:122)
        at
org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:87)
        at
org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:143)
        at java.lang.Thread.run(Thread.java:595)

I am using JENCKS/Spring to consume the Queue, Here is the activemq.conf

<!-- START SNIPPET: xbean -->
<beans xmlns="http://activemq.org/config/1.0">

  <broker useJmx="true">

        <!-- In ActiveMQ 4, you can setup destination policies -->

    <persistenceAdapter>
        <journaledJDBC journalLogFiles="20"
dataDirectory="/opt/activemq-data" dataSource="#mysql-ds"/>
        <!-- <memoryPersistenceAdapter/> -->
        <!-- <jdbcPersistenceAdapter dataSource="#mysql-ds"/> -->
        <!-- <jdbcPersistenceAdapter
adapterClass="org.apache.activemq.store.jdbc.store.adapter.BlobJDBCAdapter"/>
-->
      <!-- To use a different datasource, use th following syntax : -->

      <!-- <journaledJDBC journalLogFiles="10"
dataDirectory="/opt/activemq-data" dataSource="#mysql-ds"/> -->
    </persistenceAdapter>

    <transportConnectors>
       <transportConnector name="default" uri="tcp://localhost:61616"
discoveryUri="multicast://default"/>
       <transportConnector name="stomp"   uri="stomp://localhost:61613"/>
    </transportConnectors>

    <networkConnectors>
      <!-- by default just auto discover the other brokers -->
      <networkConnector name="default" uri="multicast://default"/>
    </networkConnectors>

  </broker>

  <bean id="mysql-ds" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
    <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
    <property name="url"
value="jdbc:mysql://10.10.32.191/activemq?relaxAutoCommit=true"/>
    <property name="username" value="sequoia"/>
    <property name="password" value="w1ck3d"/>
    <property name="poolPreparedStatements" value="true"/>
  </bean>
</beans>

Other information :
Mysql 4.1.11-debian sarge release
tried latest mysql-5 jdbc connector as well latest 3.1

Looking at the database a query is ran just before the exception:
SELECT ID, MSG FROM ACTIVEMQ_MSGS WHERE CONTAINER=? ORDER BY ID
--
View this message in context: http://www.nabble.com/MySql-Persistence-Problem-t1555507.html#a4225339
Sent from the ActiveMQ - User forum at Nabble.com.


Re: MySql Persistence Problem

Posted by Kalv <ka...@kalv.co.uk>.
I clear all the data - persistence stuff in the database and in the journal.
I have tried RC2 and only the latest incubator nigthly release. 

Which should i use for the latest build, a RC3 snapshot, Nightly-Snapshot or
incubator?
--
View this message in context: http://www.nabble.com/MySql-Persistence-Problem-t1555507.html#a4226206
Sent from the ActiveMQ - User forum at Nabble.com.


Re: MySql Persistence Problem

Posted by James Strachan <ja...@gmail.com>.
BTW when upgrading from 4.0-RC2 to 4.0-RC3 you generally have to clear down
the journals and database before upgrading the jars. Are you getting these
problems with a completely fresh installation of 4.0-RC3?

On 5/4/06, Kalv <ka...@kalv.co.uk> wrote:
>
>
> Hi all, I'm new to Activemq and i am having quite a few problems, but this
> is
> the main one at the moment that i am trying to fix.
>
> I have both RC2 and the latest Incubator release. Consumption of a queue
> works fine when using the default derby and def journal settings. I change
> the settings to use a mysql backend. It works fine when producing and
> consuming some messages. I then stop the consumer let the queue grow. Then
> stop activemq, Start it up again expecting the queue to be still there
> which
> it is but i try to consume it i get an exception:
>
> java.io.EOFException
>         at java.io.DataInputStream.readFully(DataInputStream.java:178)
>         at java.io.DataInputStream.readFully(DataInputStream.java:152)
>         at
>
> org.apache.activemq.openwire.v1.BaseDataStreamMarshaller.looseUnmarshalByteSequence
> (BaseDataStreamMarshaller.java:599)
>         at
> org.apache.activemq.openwire.v1.MessageMarshaller.looseUnmarshal(
> MessageMarshaller.java:204)
>         at
> org.apache.activemq.openwire.v1.ActiveMQMessageMarshaller.looseUnmarshal(
> ActiveMQMessageMarshaller.java:100)
>         at
>
> org.apache.activemq.openwire.v1.ActiveMQTextMessageMarshaller.looseUnmarshal
> (ActiveMQTextMessageMarshaller.java:100)
>         at
> org.apache.activemq.openwire.OpenWireFormat.doUnmarshal(
> OpenWireFormat.java:348)
>         at
> org.apache.activemq.openwire.OpenWireFormat.unmarshal(OpenWireFormat.java
> :210)
>         at
> org.apache.activemq.store.jdbc.JDBCMessageStore$1.recoverMessage(
> JDBCMessageStore.java:155)
>         at
> org.apache.activemq.store.jdbc.adapter.DefaultJDBCAdapter.doRecover(
> DefaultJDBCAdapter.java:338)
>         at
> org.apache.activemq.store.jdbc.JDBCMessageStore.recover(
> JDBCMessageStore.java:153)
>         at
> org.apache.activemq.store.journal.JournalMessageStore.recover(
> JournalMessageStore.java:342)
>         at org.apache.activemq.broker.region.Queue.<init>(Queue.java:97)
>         at
> org.apache.activemq.broker.region.QueueRegion.createDestination(
> QueueRegion.java:58)
>         at
> org.apache.activemq.broker.jmx.ManagedQueueRegion.createDestination(
> ManagedQueueRegion.java:56)
>         at
> org.apache.activemq.broker.region.AbstractRegion.addDestination(
> AbstractRegion.java:77)
>         at
> org.apache.activemq.broker.region.RegionBroker.addDestination(
> RegionBroker.java:217)
>         at
> org.apache.activemq.broker.BrokerFilter.addDestination(BrokerFilter.java
> :129)
>         at
> org.apache.activemq.advisory.AdvisoryBroker.addDestination(
> AdvisoryBroker.java:141)
>         at
> org.apache.activemq.broker.BrokerFilter.addDestination(BrokerFilter.java
> :129)
>         at
> org.apache.activemq.broker.MutableBrokerFilter.addDestination(
> MutableBrokerFilter.java:142)
>         at
> org.apache.activemq.broker.region.AbstractRegion.addConsumer(
> AbstractRegion.java:161)
>         at
> org.apache.activemq.broker.region.RegionBroker.addConsumer(
> RegionBroker.java:293)
>         at
> org.apache.activemq.broker.BrokerFilter.addConsumer(BrokerFilter.java:73)
>         at
> org.apache.activemq.advisory.AdvisoryBroker.addConsumer(
> AdvisoryBroker.java:77)
>         at
> org.apache.activemq.broker.BrokerFilter.addConsumer(BrokerFilter.java:73)
>         at
> org.apache.activemq.broker.MutableBrokerFilter.addConsumer(
> MutableBrokerFilter.java:86)
>         at
> org.apache.activemq.broker.AbstractConnection.processAddConsumer(
> AbstractConnection.java:428)
>         at
> org.apache.activemq.command.ConsumerInfo.visit(ConsumerInfo.java:295)
>         at
> org.apache.activemq.broker.AbstractConnection.service(
> AbstractConnection.java:202)
>         at
> org.apache.activemq.broker.TransportConnection$1.onCommand(
> TransportConnection.java:62)
>         at
> org.apache.activemq.transport.ResponseCorrelator.onCommand(
> ResponseCorrelator.java:97)
>         at
> org.apache.activemq.transport.TransportFilter.onCommand(
> TransportFilter.java:63)
>         at
> org.apache.activemq.transport.WireFormatNegotiator.onCommand(
> WireFormatNegotiator.java:114)
>         at
> org.apache.activemq.transport.InactivityMonitor.onCommand(
> InactivityMonitor.java:122)
>         at
> org.apache.activemq.transport.TransportSupport.doConsume(
> TransportSupport.java:87)
>         at
> org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:143)
>         at java.lang.Thread.run(Thread.java:595)
>
> I am using JENCKS/Spring to consume the Queue, Here is the activemq.conf
>
> <!-- START SNIPPET: xbean -->
> <beans xmlns="http://activemq.org/config/1.0">
>
>   <broker useJmx="true">
>
>         <!-- In ActiveMQ 4, you can setup destination policies -->
>
>     <persistenceAdapter>
>         <journaledJDBC journalLogFiles="20"
> dataDirectory="/opt/activemq-data" dataSource="#mysql-ds"/>
>         <!-- <memoryPersistenceAdapter/> -->
>         <!-- <jdbcPersistenceAdapter dataSource="#mysql-ds"/> -->
>         <!-- <jdbcPersistenceAdapter
> adapterClass="org.apache.activemq.store.jdbc.store.adapter.BlobJDBCAdapter
> "/>
> -->
>       <!-- To use a different datasource, use th following syntax : -->
>
>       <!-- <journaledJDBC journalLogFiles="10"
> dataDirectory="/opt/activemq-data" dataSource="#mysql-ds"/> -->
>     </persistenceAdapter>
>
>     <transportConnectors>
>        <transportConnector name="default" uri="tcp://localhost:61616"
> discoveryUri="multicast://default"/>
>        <transportConnector name="stomp"   uri="stomp://localhost:61613"/>
>     </transportConnectors>
>
>     <networkConnectors>
>       <!-- by default just auto discover the other brokers -->
>       <networkConnector name="default" uri="multicast://default"/>
>     </networkConnectors>
>
>   </broker>
>
>   <bean id="mysql-ds" class="org.apache.commons.dbcp.BasicDataSource"
> destroy-method="close">
>     <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
>     <property name="url"
> value="jdbc:mysql://10.10.32.191/activemq?relaxAutoCommit=true"/>
>     <property name="username" value="sequoia"/>
>     <property name="password" value="w1ck3d"/>
>     <property name="poolPreparedStatements" value="true"/>
>   </bean>
> </beans>
>
> Other information :
> Mysql 4.1.11-debian sarge release
> tried latest mysql-5 jdbc connector as well latest 3.1
>
> Looking at the database a query is ran just before the exception:
> SELECT ID, MSG FROM ACTIVEMQ_MSGS WHERE CONTAINER=? ORDER BY ID
> --
> View this message in context:
> http://www.nabble.com/MySql-Persistence-Problem-t1555507.html#a4225339
> Sent from the ActiveMQ - User forum at Nabble.com.
>
>


--

James
-------
http://radio.weblogs.com/0112098/