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

骆驼无缘无故地停下来

陈泰宁
2023-03-14

我有一个bean生产者和一个bean消费者,在一条路由中使用。生产者是通过一个线程产生的,并监听hazelcast队列上的数据(它可能是其他任何东西,甚至是本地随机生成的数据)。

数据被发送到sedaendpoint,以确保并发性。使用者获取数据并将其转发到另一个hazelcast队列。但也可能是其他任何东西。

[                          main] MainSupport                    INFO  Apache Camel 2.10.3 stopping
[                          main] DefaultCamelContext            INFO  Apache Camel 2.10.3 (CamelContext: camel-1) is shutting down
[                          main] DefaultShutdownStrategy        INFO  Starting to graceful shutdown 1 routes (timeout 300 seconds)
[el-1) thread #2 - ShutdownTask] DefaultShutdownStrategy        INFO  Waiting as there are still 1 inflight and pending exchanges to complete, timeout in 300 seconds.

然后在300秒内静止处理并停止。

下面是一些代码:

制片人:

   public void run()
    {
        try
        {
            IRequest service = ProxyHelper.createProxy(context.getEndpoint("seda:echo"), IRequest.class);

            BlockingQueue<Request> q = client.getQueue(MainApp.sQueueReceive);

            while(true)
            {
                Request request;
                request = q.take();
                // no response awaited
                service.request(request);
            }
        }
   public void onMessage(Request request)
    {
        nb_forwarded++;
        BlockingQueue<Request> q = MainApp.client.getQueue(MainApp.sQueueForward);
        try
        {
            q.put(request);
        }
        catch (InterruptedException e)
        {
            exit(2);  --> it does not happen
        }
from("seda:echo")
.setExchangePattern(ExchangePattern.InOnly)
.bean(new HazelcastForwarder(), "onMessage");

谢了!

共有1个答案

武博艺
2023-03-14

启用调试或跟踪日志记录,以揭示camel停止的真正原因。可能是封闭容器正在停止(如果您在某物中运行camel)或类似的情况。

 类似资料:
  • 经过大量的谷歌搜索,我想我会问这个问题。我有一段代码可以针对 postgres (9.2) 数据库执行以下操作: 开始交易 删除表上的索引(5个索引) 在表中插入一百万行 重新创建索引 提交事务。 我对 postgres 的阅读告诉我,在此操作正在进行时,我应该能够做到这一点并且仍然允许其他用户从表中进行选择(实际上甚至使用现有索引,因为它们尚未删除)。 我实际上发现的是表上的所有其他查询(它们都

  • 我正在设置路由1中骆驼交换的属性。我正在尝试在拆分器内的第二条路由中更新该属性。但是在拆分器的第二次迭代中,我得到的是我在路由1中设置的原始值,而不是新的更新值。下面是我正在尝试的示例。。 豆子里面: 为什么不更新属性?甚至我也试着在标题中设置。同样的结果。非常感谢。

  • 我设置了一个endpoint,如下所示: 我用骆驼石英2.22.2和石英1.8.6 下面是从关闭到启动上下文的日志。

  • 嗨,我在camel中有一个JMS消费者路由,我的要求是在特定事件时停止/暂停该路由(基于某个字段值),然后使用调度器恢复该路由。为此,我创建了两个路由,一个是我的原始jms消费者路由,另一个是调度程序路由,它们恢复jms消费者路由,虽然我能够暂停路由,但第二个路由不恢复暂停的路由,它显示的状态为已启动。 以下是我的两条路线 请帮助我如何实现上述场景。

  • 我的Apache骆驼项目开始有一个相当好的结构,但我陷入了困境,因为我的routeContext中的路由无限执行。我的所有路由都使用SQL组件,我希望所有路由只执行一次。 我发现,当我的routeContext中有两条路由时,两条路由都只执行一次,但是一旦我添加了第三条路由(不管第三条路由是什么),camel就开始无限执行所有路由。我所有的路由都导致sql插入,因此相同的路由运行多次会导致重复键错

  • 我有一个camel路由正在从一个文件中读取,它不会在路由结束后删除。camellock文件,所以我想关闭lock。Camel-File的文档说明属性是“lock”,但是当我执行时,我得到: 原因:org.apache.camel.resolveEndpointFailedException:未能解析endpoint:file:///data/in/?lock=false,原因:未能解析endpoi