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

将消息放入队列后,如何在骆驼路由上发送即时响应

林德惠
2023-03-14

我正在尝试实现一个非常简单的骆驼路由,即从CXFendpoint接收请求,并将其放置在队列中,以便稍后进行异步处理。一旦消息被放置在队列中,我需要能够向调用者发送一个响应,指示消息已被接收。我已经完成了教程,但似乎无法正确完成。所发生的情况是,一旦消息被放置在队列中,在消息从队列处理到其预期目的地之前,不会向调用者发送响应。

下面的代码

    from (SOAP_ENDPOINT)
        .to(SEDA_RECEIVED)
        .transform(constant(OK))//I expect this transform to return OK to caller
        .log("OK response sent back to caller");

    from (SEDA_RECEIVED)
        .to(BEAN_CONVERT_REQUEST)
        .to("activemq:queue:events");

    from ("activemq:queue:events")
            .to(BEAN_STORE_TO_DB);

共有2个答案

翟嘉志
2023-03-14

是的,这是事件消息eiphttp://camel.apache.org/event-message.html

有点相关的是电线抽头eiphttp://camel.apache.org/wire-tap.html

嵇浩淼
2023-03-14

代替to(SEDA_RECEIVED)您可以尝试in比如说(SEDA_RECEIVED)

 类似资料:
  • 我正在使用apache camel 3.8,并试图制作一个简单的tcp服务器,将请求消息发送回客户端(我使用的客户端是PacketSender)。 问题是,如果方法花费太长时间,15毫秒后netty会在后台返回一个空响应,即使仍在中。如果我不让方法(线程)Hibernate,响应会立即与接收到的内容一起发送。 我该如何管理它,netty正在等待我完成我的进程并发送我在交换消息正文中设置的响应? 以

  • 我试图通过驼峰路由将消息放到Weblogic JMS中的队列中。 我的目标是最终配置一个Route以使用来自jms队列的消息,我将早期Route的数据发布到该队列。 这是我的配置: 我的路线如下所示: 我尝试执行此路由时遇到此异常: 我按照以下过程创建了此处提到的队列:https://blogs.oracle.com/soaproactive/entry/how_to_create_a_simpl

  • 我想建模一个接受包含xml消息的tcp请求的Apache Camel路由。 每个消息可能导致大量的响应,这些响应应该在传入的套接字上发回。我在同步模式下使用了camel-netty组件,它适用于单个消息。但是有可能在套接字上发回多条消息吗?基本上是回归前的分裂。 在我的例子中,异常是IllegalArgument,说明endpoint不支持ArrayList作为有效负载。 干杯。

  • 我有一个需求,我从ESB api获得请求,并通过restfull tomcatendpoint使用ESB排序,我验证请求,然后将其发送到JMS队列, 这很好,但如果在restfull tomcatendpoint中验证失败,我还希望将响应发送给发送者。由于验证失败,消息不会被传递到队列,而是被丢弃到队列中。 有可能吗? 请提示,如果消息到达队列或在esb序列中的tomcatendpoint被丢弃,

  • 设置:默认ActiveMQ.XML。本地数据中心的3台服务器上的每台服务器一个ActiveMQ实例,远程数据中心服务器上的每个服务器一个Active MQ实例。所有3个1实例都在运行,但每个数据中心在任何给定时刻只有一个ActiveMQ实例是主实例。来自所有数据中心的所有实例的消息都将持久化到网络KahaDB,我们为每条消息配置了两次重试。 目标:保持数据中心之间的队列同步。 问题:要测试远程服务

  • 我的骆驼上下文文件如下所示: 我在应用程序中的各种不同endpoint之间有几条其他路由,它们需要重新传递配置,并且按照预期的方式运行。但是,这个特定的路由类型(从文件到队列)似乎并不遵循我配置的任何重新传递策略。当我关闭ActiveMQ代理时,路由会尝试每6秒重新传递一次文件。: 10:54:17,088 WARN c_demo%5GenericFileOnCompletion 105-org.