下面是使用骆驼路由从队列中读取消息的代码片段。
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);
}
您可以在骆驼中使用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。