gpt4 book ai didi

java - ProducerTemplate 无法将Body 发送到Direct Endpoint

转载 作者:行者123 更新时间:2023-12-01 14:34:18 30 4
gpt4 key购买 nike

我想使用 Camel 作为我正在开发的应用程序的集成点。我的目的是从我的应用程序将消息注入(inject) Camel ,并从 Camel 接收消息,并通过 Camel 上下文路由在应用程序启动时如何处理这些消息。根据我所做的研究,ProducerTemplate/ConsumerTemplate 似乎是与 Camel 上下文中定义的路由进行通信的方式。但是,当我使用 ProducerTemplate 发布到“direct:connect”时,我收到“没有可用的消费者”异常。即使route1能够与route2通信并且我收到一条日志消息,也会发生这种情况:

Route: route2 started and consuming from: Endpoint[direct://connect]

任何人都可以提供关于如何最好地使用 Camel 来实现我的目的的指导吗?

CamelEval.java

public class CamelEval {
public static void main(String[] args) throws Exception {
ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext ("camel-streams.xml");
SpringCamelContext sctx = new SpringCamelContext (ctx);
sctx.start();

sctx.createProducerTemplate().sendBody("direct:connect", "hello world");

Thread.sleep (5000);
}
}

camel-streams.xml

<camelContext trace="true" xmlns="http://camel.apache.org/schema/spring">
<route>
<from uri="stream:in?promptMessage=Enter Something: "/>
<transform>
<simple>${body.toUpperCase()}</simple>
</transform>
<to uri="direct:connect"/>
</route>
<route>
<from uri="direct:connect"/>
<to uri="stream:out"/>
</route>
</camelContext>

最佳答案

你最终得到了 2 只 Camel 。 XML 文件中已经定义了一个。

你应该做的是要求Spring从xml文件中为你提供Camel,而不是使用代码创建一个新的Camel

new SpringCamelContext

最简单的是在XML文件中给出camelContext和id

<camelContext id="myCamel" ...>

,然后使用spring api查找具有该id的bean

CamelContext sctx = (CamelContext) cxt.getBean("myCamel");

关于java - ProducerTemplate 无法将Body 发送到Direct Endpoint,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16608457/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com