Hi there,

Apart from the question why you want to do such a thin in an interceptor instead of
using virtual destinations or a camel route....

Could you share your activemq.xml to let us see how you hooked in the plugin in the broker ?

Perhaps you could include some logging statements in your code and understand what is executed. You could also attach a remote debugger to Activemq and debug through your code.


Best regards
Andreas

On Mar 23, 2009, at 5:35 PM, DanielR wrote:


any ideas?



DanielR wrote:

I have a main queue named QUEUE.COLOR.
1 Producer send a lot of messages to QUEUE.COLOR
Messages only have "red ..." or "blue..." in their body

In trying to route the messages with "red ..." to QUEUE.RED and the
messages with "blue..." to QUEUE.BLUE ONLY USING AN INTERCEPTOR

My problem: messages are randomly dispatched to QUEUE.RED or QUEUE.BLUE

I have inspected some messages in QUEUE.RED and have their Destination
property set to "queue://QUEUE.BLUE"   that's weird...


Any clues? corrections? hints? codes?


Best Regards, DR.



This is my code:

import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.activemq.ActiveMQSession;
import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.broker.Broker;
import org.apache.activemq.broker.BrokerFilter;
import org.apache.activemq.broker.BrokerPlugin;
import org.apache.activemq.broker.ProducerBrokerExchange;
import org.apache.activemq.command.Message;
import org.apache.activemq.command.ActiveMQQueue;
import org.apache.activemq.broker.ConnectionContext;
import org.apache.activemq.broker.region.MessageReference;
import org.apache.activemq.command.TransactionId;
import org.apache.activemq.command.ActiveMQDestination;

import javax.jms.TextMessage;
import javax.jms.Session;
import javax.jms.Connection;
import javax.jms.Queue;


public class MsgInterceptorPluginRouter2 extends BrokerFilter implements
BrokerPlugin {  

        public MsgInterceptorPluginRouter2() {
                super(null);
        }

        public MsgInterceptorPluginRouter2(Broker next) {
                super(next);
        }

        public Broker installPlugin(Broker broker) throws Exception {
                return new MsgInterceptorPluginRouter2(broker);
        }

        public void send(ProducerBrokerExchange producerExchange, Message
messageSend) throws Exception{
String content = ((TextMessage) messageSend).getText().substring(0, 30)
+ "...";
                
                String substr = content.substring(0,4);
        
                if (substr.matches("red\\s*")) {
                        messageSend.setDestination(this.getDestinations()[2]);
                }
                else if (substr.matches("blue\\s*")) {
                        messageSend.setDestination(this.getDestinations()[7]);
                }

                super.send(producerExchange, messageSend);
        }
        
}




--
View this message in context: 
http://www.nabble.com/Problem-trying-to-route-with-Interceptors-tp22606463p22663866.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.


---
Mit freundlichen Grüssen - Kind Regards
Andreas Gies
Principal Consultant
Open Source Center of Competence

Progress Software GmbH
Agrippinawerft 26
50678 Köln

E-Mail          ag...@progress.com
Direct Line     +49 (0)9953 980349
Mobile          +49 (0)170 5759611
Skype           +44 (0)20 3239 2922
Skype           +353 (0)1 443 4971
Skype           +1 (0)781 262 0168

http://www.progress.com
http://fusesource.com
http://open-source-adventures.blogspot.com



-------------------------------------------------------
Progress Software GmbH
Sitz der Gesellschaft: Agrippinawerft 26, 50678 Koeln;
Niederlassung: Fuerstenrieder Str. 279, 81377 Muenchen
Amtsgericht Koeln, HRB 15620;
Geschaeftsfuehrung: David Ireland
-------------------------------------------------------

Reply via email to