Camel Werfen MethodNotFound für die Methode, die existiert und ist public

Teste ich ein Kamel Runde, aber wenn ich die Strecke versuchen, auf eine bestimmte Methode in einer bean-es wird immer behauptet, dass es keine solche Methode gefunden. Quelle:

public class CommunicatorTest
{
    FakeMessageConverter converter;
    CamelContext context;
    ProducerTemplate template;
    String producerEndpoint = "seda:messagesFound";
    long test = 123456789;

    static final Logger logger = Logger.getLogger(CommunicatorTest.class);

    public CommunicatorTest()
    {

    }

    @Before
    public void setUp() throws Exception
    {
        converter = new FakeMessageConverter();
        SimpleRegistry registry = new SimpleRegistry();
        registry.put("converter", converter);
        context = new DefaultCamelContext(registry);
        template = context.createProducerTemplate();
        context.addRoutes(new CommunicatorRoute());

        logger.info("Done creating context");

        context.start();
    }

    @After
    public void tearDown() throws Exception
    {
        context.stop();
    }


    @Test
    public void testExistanceOfBean()
    {
        Object lookup = context.getRegistry().lookup("converter");
        assertTrue("Object not a MessageConverter", lookup instanceof FakeMessageConverter);
    }

    @Test
    public void testRoute()
    {
        Message msg = new Message();
        msg.setHeader(new MessageHeader());
        msg.getHeader().setSourceId(test);

        logger.info("Sending data");
        template.sendBody(producerEndpoint, msg);


        assertEquals("value not the same", test, converter.getSid());
        logger.info("Done Sending");
    }

    private static class FakeMessageConverter
    {

        private long sid;
        private boolean edited = false;

        public FakeMessageConverter()
        {
        }

        public void processMessage(Message msg)
        {
            sid = msg.getHeader().getSourceId();
            edited = true;
            logger.info("The sid"+sid);
        }

        /**
         * @return the sid
         */
        public long getSid()
        {
            return sid;
        }

        /**
         * @param sid the sid to set
         */
        public void setSid(long sid)
        {
            this.sid = sid;
        }
    }

}

Die route ist wie folgt:

public class CommunicatorRoute extends RouteBuilder
{

    @Override
    public void configure() throws Exception
    {
        from("seda:messagesFound").bean("converter", "processMessage");
    }

}

Ausnahme ist wie folgt:

ERROR [org.apache.camel.component.seda.SedaConsumer] - Error processing exchange. Exchange[Message: net.package.Message@f593af]. Caused by: [org.apache.camel.component.bean.MethodNotFoundException - Method with name: processMessage not found on bean: converter. Exchange[Message: net.package.message.Message@f593af]]

org.apache.camel.Komponente.bean.MethodNotFoundException: Methode mit dem Namen: processMessage nicht gefunden bean: converter. Exchange[Meldung: com.saic.jswe.common.cdif.message.Message@f593af]

Ich bin noch ziemlich neu in camel also, wenn ich mache etwas wirklich einfachen Fehler lassen Sie es mich bitte wissen.

  • im nicht sicher, wie camel Suche nach Methoden, aber könnte sein, dass es gesucht wird eine Methode mit verschiedenen Parametern. Wie processMessage(Körper, Nachricht) oder so ähnlich
InformationsquelleAutor mja | 2012-09-17
Schreibe einen Kommentar