当前位置: 首页 > 知识库问答 >
问题:

如何将请求数据从spring boot controller传递到apache camel路由

高山
2023-03-14

用例:在我的应用程序中,有一个REST控制器,是在Spring boot的帮助下开发的,我的要求是,我必须将请求数据从控制器传递到路由,从路由再次需要将数据传递到MQ

在这里,我如何将inputReq数据从控制器传递到路由?谁能帮忙吗

@Controller
public class RequestController {

    @PostMapping("/request")
    public String requestMapping(@RequestBody String inputReq) {
        new ProduceRouter();  // instance of the apache camel route
        return null;

    }
}

下面是阿帕奇骆驼路线:

@Component
public class ProduceRouter extends RouteBuilder {

    @Override
    public void configure() throws Exception {
            
        .from("jms:RequestQueue?disableReplyTo=true")
        .log("Received Body is  ${body}   and header info is   ${headers}  ");

        

    }
}

共有1个答案

徐卓
2023-03-14

在控制器中,自动连接CamelContext和ProducerTemplate的实例。

@Autowired
private CamelContext camelContext;
@Autowired
private ProducerTemplate producer;

然后需要使用ExchangeBuilder创建一个交换请求,并添加请求正文。

Exchange exchangeRequest = ExchangeBuilder.anExchange(camelContext)
.withBody(inputReq).build();

然后,您可以调用生产者对象上的发送方法来访问您的路由并捕获响应。

Exchange exchangeResponse = producer.send("direct:startRoute", exchangeRequest).

然后在路由文件中,您可以从direct:startRoute

 类似资料:
  • 问题内容: 我有一个执行http POST请求的函数。代码在下面指定。这很好。 我为http GET提供了另一个功能,我想将数据发送到该请求。但是我没有那个选择。 的语法是 获取(URL,配置) 问题答案: HTTP GET请求不能包含要发布到服务器的数据。但是,您可以将查询字符串添加到请求中。 angular.http为此提供了一个选项。 请参阅:http : //docs.angularjs.

  • 我创建了一个新的电子应用程序。 在索引中。jsi使用节点文件系统加载数据 如果我试着使用require。JSIT之所以能够工作,是因为它运行在不同的线程上,而不是使用节点进行初始化,更像是一个实际的浏览器窗口。但有没有办法从索引中传递数据呢。js到main。js 我不知道我对这个问题的看法是否部分正确 如果您需要更多代码或信息,请询问!

  • 我有一堆像这样的路由: 我正在使用通过对象访问路由信息。我想随时知道我在哪个“区域”。目前,我可以通过查看路由是否以某个值开始(例如“/users”)来实现这一点,但这似乎有点骇人听闻。当我定义每条路线时,我希望能够传递额外的信息——在本例中是区域信息?或者也许有更好的方法?

  • 问题内容: 我需要在单击recyclerview的图像时将数据从传递 到 。有人可以帮忙吗? 问题答案: 创建一个侦听器接口,然后让您的MainActivity实现它。这样,您可以在onClick方法中调用回调方法。 接口: 主要活动: 您的VideoAdapter:

  • 问题内容: 我有一个一个的按钮在我的课,这是我的主要窗口类: 我有一个类就是主窗口的内容。 如何访问内容中的此按钮?有没有更好的方法来组织和控制器以促进此访问? 问题答案: 这样使用委托怎么样?本示例将更改按钮的标题。

  • 我正试图将数据从Kafka传递到火花流。 这就是我到现在所做的: null