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 <[EMAIL PROTECTED]> 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-tp17285256s2354p17326378.html Sent from the ActiveMQ - User mailing list archive at Nabble.com.