如何使用骆驼路由每 4 小时从队列中读取消息

问题描述 投票:0回答:1

下面是使用骆驼路由从队列中读取消息的代码片段。

from("spring-rabbitmq:{{rabbitmq.in.exchange}}?exchangeType=topic&queues={{in.dummy.queue}}") .process(虚拟处理器)

现在,我想每隔 4 小时阅读一次消息。我怎样才能做到这一点?

我读到了有关石英元件的内容。 https://camel.apache.org/components/4.4.x/quartz-component.html#:~:text=The%20Quartz%20component%20provides%20a%20Polling%20Consumer%20scheduler%20which%20allows,from(% 22文件%3Ainbox%3F

更新正在使用的代码片段:

// 该类扩展了 RouteBuilder 并配置了一个 Quartz 定时器每两分钟触发一次, // 将消息从 RabbitMQ 交换发送到处理器。 // 确保提供必要的 Spring RabbitMQ 配置并注入 'dummyQ3Processor' bean。 公共类 DummyProcessorRoute 扩展 RouteBuilder {

@Autowired
DummyQ3Processor dummyQ3Processor;

@Override
public void configure() throws Exception {
    from("quartz://myTimer?cron=0+*/2+*+*+*+?")
        .to("spring-rabbitmq:{{rabbitmq.in.exchange}}?exchangeType=topic&queues={{in.hd.dummy}}")
        .process(dummyQ3Processor);
}

}

@服务 公共类 dummyQ3Processor 实现处理器 {

@Override
public void process(Exchange exchange)  {
    
    String messageBody = exchange.getIn().getBody(String.class);
    exchange.getIn().setBody(messageBody);
    
    System.out.println("Message body:"+messageBody);
    
    

}

spring-boot apache-camel quartz-scheduler camel-routes
1个回答
0
投票

您可以在骆驼中使用quartz,因为这可以在您集成时提供消息/任务的计划交付。

下面是在camel中使用quartz的示例代码:

from("quartz://cronJobNameDependsOnYou?cron=0 */4 * * * ?").toD("spring-rabbitmq:{{rabbitmq.in.exchange}}?exchangeType=topic&queues={{in.dummy.queue}}").process(dummyProcessor)

你可以删除吗?如果您愿意,甚至可以在 cron 中添加 try catch 语句来捕获任何异常代码 - 在石英使用 .doTry() 之后和在进程使用 .doCatch(Exception.class)

之后

基本上,这个quartz 的作用是使用Quartz 调度程序提供预定的消息传递。

有关更多信息,您可以访问其官方文档。

如果您提供更多代码,那么我可能可以提供帮助,因为我已经在我的项目中集成了 apache Camel。

© www.soinside.com 2019 - 2024. All rights reserved.