我正在使用Camel(带有camel-ejb依赖项)将消息从ActiveMQ路由到我的bean的方法。到目前为止,我已经在 requestHandler bean 中接收了消息。
<amq:connectionFactory id="amqConnectionFactory"
brokerURL="tcp://localhost:61616" />
<bean class="org.springframework.jms.connection.CachingConnectionFactory"
id="connectionFactory">
<constructor-arg ref="amqConnectionFactory" />
<property name="sessionCacheSize" value="100" />
</bean>
<bean class="org.springframework.jms.core.JmsTemplate" id="jmsTemplate">
<constructor-arg ref="connectionFactory" />
</bean>
<camel:camelContext id="camelContext">
<camel:route>
<camel:from uri="activemq:queue:inQueue" />
<camel:setExchangePattern pattern="InOut"/>
<camel:to uri="bean:requestHandler?method=handleRequest" />
</camel:route>
</camel:camelContext>
如果我现在更改handleRequest以返回字符串,我将如何修改我的路由以将队列上的字符串返回给向我发送消息的人?
谢谢!
编辑:
客户端代码:
(在camel-context.xml中)
<camel:camelContext id="camel-client">
<camel:template id="camelTemplate" />
</camel:camelContext>
<bean id="jms" class="org.apache.activemq.camel.component.ActiveMQComponent">
<property name="brokerURL" value="tcp://localhost:61616" />
</bean>
(在 CamelClient.java 中)
public class CamelClient {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("camel-context.xml");
ProducerTemplate pTemplate = context.getBean("camelTemplate", ProducerTemplate.class);
System.out.println("Message Sending started");
String ret = pTemplate.requestBody("activemq:queue:inQueue", "47264", String.class);
System.out.println("Message received:" + ret);
}
}
最佳答案
并尝试在 route 添加日志步骤
<camel:route>
<camel:from uri="activemq:queue:inQueue" />
<camel:setExchangePattern pattern="InOut"/>
<camel:to uri="bean:requestHandler?method=handleRequest" />
<camel:to uri="log:reply" />
</camel:route>
并且还向我们展示您的 requestHandler bean 的代码,它的用途,可以让我们更好地帮助您。
关于java - Camel 响应从 bean 返回到 ActiveMQ 队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22296285/