activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From jydev <jyoony...@gmail.com>
Subject Re: ClassCastException with VirtualTopic on 5.1
Date Mon, 19 May 2008 21:06:14 GMT

With slave running, I get the following in the master

ERROR MasterBroker                   - Slave Failed
java.lang.ClassCastException: org.apache.activemq.broker.region.Topic cannot
be cast to org.apache.activemq.broker.region.Queue
        at
org.apache.activemq.broker.region.QueueSubscription.acknowledge(QueueSubscription.java:50)
        at
org.apache.activemq.broker.region.PrefetchSubscription.acknowledge(PrefetchSubscription.java:224)
        at
org.apache.activemq.broker.region.AbstractRegion.acknowledge(AbstractRegion.java:364)
        at
org.apache.activemq.broker.region.RegionBroker.acknowledge(RegionBroker.java:470)
        at
org.apache.activemq.broker.TransactionBroker.acknowledge(TransactionBroker.java:194)
        at
org.apache.activemq.broker.BrokerFilter.acknowledge(BrokerFilter.java:73)
        at
org.apache.activemq.broker.BrokerFilter.acknowledge(BrokerFilter.java:73)
        at
org.apache.activemq.broker.MutableBrokerFilter.acknowledge(MutableBrokerFilter.java:84)
        at
org.apache.activemq.broker.TransportConnection.processMessageAck(TransportConnection.java:443)
        at org.apache.activemq.command.MessageAck.visit(MessageAck.java:196)
        at
org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:292)
        at
org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:180)
        at
org.apache.activemq.transport.ResponseCorrelator.onCommand(ResponseCorrelator.java:104)
        at
org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.java:68)
        at
org.apache.activemq.transport.vm.VMTransport.iterate(VMTransport.java:205)
        at
org.apache.activemq.thread.DedicatedTaskRunner.runTask(DedicatedTaskRunner.java:98)
        at
org.apache.activemq.thread.DedicatedTaskRunner$1.run(DedicatedTaskRunner.java:36)
...

ERROR Service                        - Async error occurred:
java.lang.IllegalArgumentException: The subscription does not exist:
ID:localhost.localdomain-53791-1211227704093-0:0:2:1
java.lang.IllegalArgumentException: The subscription does not exist:
ID:localhost.localdomain-53791-1211227704093-0:0:2:1
        at
org.apache.activemq.broker.region.AbstractRegion.acknowledge(AbstractRegion.java:357)
        at
org.apache.activemq.broker.region.RegionBroker.acknowledge(RegionBroker.java:470)
        at
org.apache.activemq.broker.TransactionBroker.acknowledge(TransactionBroker.java:194)
        at
org.apache.activemq.broker.BrokerFilter.acknowledge(BrokerFilter.java:73)
        at
org.apache.activemq.broker.BrokerFilter.acknowledge(BrokerFilter.java:73)
        at
org.apache.activemq.broker.MutableBrokerFilter.acknowledge(MutableBrokerFilter.java:84)
        at
org.apache.activemq.broker.ft.MasterBroker.acknowledge(MasterBroker.java:322)
        at
org.apache.activemq.broker.MutableBrokerFilter.acknowledge(MutableBrokerFilter.java:84)
        at
org.apache.activemq.broker.TransportConnection.processMessageAck(TransportConnection.java:443)
        at org.apache.activemq.command.MessageAck.visit(MessageAck.java:196)
        at
org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:292)
        at
org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:180)
        at
org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.java:68)
        at
org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:143)
        at
org.apache.activemq.transport.InactivityMonitor.onCommand(InactivityMonitor.java:206)
        at
org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:84)
        at
org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:196)
        at
org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:183)
        at java.lang.Thread.run(Thread.java:619)





jydev wrote:
> 
> I was able to avoid this problem by making the connection parameter
> consistent on both broker's activemq.xml and my client connection uri
> 
> In activemq.xml, I was using "localhost" in transportConnectors uri's,
> where as in the client connection uri, I was using the IP address of my
> localhost.  Some how, may be on linux, ActiveMQ thinks they are different
> addresses and forward the message or something like that?
> 
> Any how, I got over that hurdle, but I'm getting another error when
> failover is configured...  This was working before without VirtualTopic,
> so I have a feeling it might be related to that...
> 
> Thanks!
> 
> 
> 
> jydev wrote:
>> 
>> Hi Aaron,
>> 
>> Thanks for your reply.  I tried running our configuration at home (not
>> using your test class), but unable to reproduce.  Only thing I can think
>> that's different is the OS.  We use CentOS at work and I was running on
>> Windows at home.  But it doesn't make sense since ActiveMQ seems to be
>> 100% java implementation and the errors doesn't seem to be OS related...
>> 
>> I'll try again tomorrow at the office.
>> 
>> --jy
>> 
>> 
>> Aaron Mulder wrote:
>>> 
>>> I did not see this problem with the admittedly inefficient test class
>>> attached (which is only the consumer part).
>>> 
>>> Thanks,
>>>        Aaron
>>> 
>>> On Fri, May 16, 2008 at 6:17 PM, jydev <jyoonyang@gmail.com> wrote:
>>>>
>>>> Hello,
>>>>
>>>> Getting the following error with VirtualTopic on 5.1, when there are
>>>> more
>>>> than one topic subscribers.
>>>>
>>>> ERROR Service                        - Async error occurred:
>>>> java.lang.ClassCastException: org.apache.activemq.broker.region.Topic
>>>> cannot
>>>> be cast to org.apache.activemq.broker.region.Queue
>>>> java.lang.ClassCastException: org.apache.activemq.broker.region.Topic
>>>> cannot
>>>> be cast to org.apache.activemq.broker.region.Queue
>>>>        at
>>>> org.apache.activemq.broker.region.QueueSubscription.acknowledge(QueueSubscription.java:50)
>>>>        at
>>>> org.apache.activemq.broker.region.PrefetchSubscription.acknowledge(PrefetchSubscription.java:224)
>>>>        at
>>>> org.apache.activemq.broker.region.AbstractRegion.acknowledge(AbstractRegion.java:364)
>>>>        at
>>>> org.apache.activemq.broker.region.RegionBroker.acknowledge(RegionBroker.java:470)
>>>>        at
>>>> org.apache.activemq.broker.TransactionBroker.acknowledge(TransactionBroker.java:194)
>>>>        at
>>>> org.apache.activemq.broker.BrokerFilter.acknowledge(BrokerFilter.java:73)
>>>>        at
>>>> org.apache.activemq.broker.BrokerFilter.acknowledge(BrokerFilter.java:73)
>>>>        at
>>>> org.apache.activemq.broker.MutableBrokerFilter.acknowledge(MutableBrokerFilter.java:84)
>>>>        at
>>>> org.apache.activemq.broker.TransportConnection.processMessageAck(TransportConnection.java:443)
>>>>        at
>>>> org.apache.activemq.command.MessageAck.visit(MessageAck.java:196)
>>>>        at
>>>> org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:292)
>>>>        at
>>>> org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:180)
>>>>        at
>>>> org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.java:68)
>>>>        at
>>>> org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:143)
>>>>        at
>>>> org.apache.activemq.transport.InactivityMonitor.onCommand(InactivityMonitor.java:206)
>>>>        at
>>>> org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:84)
>>>>        at
>>>> org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:196)
>>>>        at
>>>> org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:183)
>>>>        at java.lang.Thread.run(Thread.java:619)
>>>>
>>>> This seems to be already captured as an issue:
>>>> https://issues.apache.org/activemq/browse/AMQ-1687
>>>>
>>>> Any idea when there will be a patch for this?  Is there a work around?
>>>>
>>>> It seems like the messages are getting to the listeners ok even though
>>>> broker is spitting out the errors above.  But I want to make sure that
>>>> there
>>>> would be no weird side-effects due to the error.
>>>>
>>>> Thanks you in advance
>>>> jydev
>>>> --
>>>> View this message in context:
>>>> http://www.nabble.com/ClassCastException-with-VirtualTopic-on-5.1-tp17285256s2354p17285256.html
>>>> Sent from the ActiveMQ - User mailing list archive at Nabble.com.
>>>>
>>>>
>>>>
>>> 
>>> package training;
>>> 
>>> import javax.jms.ConnectionFactory;
>>> import javax.jms.JMSException;
>>> import javax.jms.Connection;
>>> import javax.jms.Session;
>>> import javax.jms.TextMessage;
>>> import javax.jms.MessageConsumer;
>>> import javax.jms.Destination;
>>> import org.apache.activemq.ActiveMQConnectionFactory;
>>> 
>>> /**
>>>  * Used to start clients to read a number of messages from a topic or
>>> queue.
>>>  */
>>> public class GenericConsumer {
>>>     private final static String DEFAULT_ACTIVEMQ_URL =
>>> "tcp://localhost:61616";
>>>     private ConnectionFactory factory;
>>> 
>>>     public void initialize() {
>>>         factory = new ActiveMQConnectionFactory(DEFAULT_ACTIVEMQ_URL);
>>>     }
>>> 
>>>     public void receiveMessage(String destName, boolean isQueue, String
>>> clientID) throws JMSException {
>>>         Connection connection = null;
>>>         Session session = null;
>>>         MessageConsumer consumer = null;
>>>         try {
>>>             connection = factory.createConnection();
>>>             session = connection.createSession(false,
>>> Session.AUTO_ACKNOWLEDGE);
>>>             Destination dest = isQueue ? session.createQueue(destName) :
>>> session.createTopic(destName);
>>>             consumer = session.createConsumer(dest);
>>>             connection.start();
>>>             TextMessage message = (TextMessage) consumer.receive(5000);
>>>             if(message != null) {
>>>                 System.out.println(clientID+" Received message on
>>> destination "+destName+" with ID "+message.getJMSMessageID());
>>>             } else {
>>>                 System.out.println(clientID+" Consumer timed out on
>>> destination "+destName+"; no message received.");
>>>             }
>>>             connection.stop();
>>>         } finally {
>>>             if(consumer != null) try
>>> {consumer.close();}catch(JMSException e) {}
>>>             if(session != null) try {session.close();}catch(JMSException
>>> e) {}
>>>             if(connection != null) try
>>> {connection.close();}catch(JMSException e) {}
>>>         }
>>>     }
>>> 
>>>     /**
>>>      * Starts a new thread to process messages from the given
>>> destination.
>>>      */
>>>     public static void launchConsumer(final String destName, final
>>> boolean isQueue, final String clientID, final int messageCount) {
>>>         Thread t = new Thread() {
>>>             public void run() {
>>>                 GenericConsumer consumer = new GenericConsumer();
>>>                 consumer.initialize();
>>>                 System.out.println(clientID+" consumer started.");
>>>                 try {
>>>                     for(int i=0; i<messageCount; i++) {
>>>                         consumer.receiveMessage(destName, isQueue,
>>> clientID);
>>>                     }
>>>                 } catch (Exception e) {
>>>                     e.printStackTrace();
>>>                 }
>>>                 System.out.println(clientID+" consumer FINISHED.");
>>>             }
>>>         };
>>>         t.start();
>>>     }
>>> 
>>>     public static void main(String[] args) {
>>>         // Start 2 consumers to read off the queue normally
>>>         launchConsumer("Consumer.Foo.VirtualTopic.Test", true, "Client
>>> 1", 10);
>>>         launchConsumer("Consumer.Foo.VirtualTopic.Test", true, "Client
>>> 2", 20);
>>>         // Start 2 consumers to read off the queue normally
>>>         launchConsumer("Consumer.Bar.VirtualTopic.Test", true,
>>> "ClientB1", 10);
>>>         launchConsumer("Consumer.Bar.VirtualTopic.Test", true,
>>> "ClientB2", 20);
>>>     }
>>> 
>>> }
>>> 
>>> 
>> 
>> 
> 
> 

-- 
View this message in context: http://www.nabble.com/ClassCastException-with-VirtualTopic-on-5.1-tp17285256s2354p17328185.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.


Mime
View raw message