架构
消费者模板
登录后可跨设备保存划线和私人笔记登录
ConsumerTemplate
ConsumerTemplate 接口允许你以多种不同的方式从端点接收消息交换,从而方便地在 Java 代码中操作 Camel Endpoint 实例。
如果你只是想从同一个端点接收大量消息,可以为它配置一个默认端点;也可以将 Endpoint 实例或 uri 作为第一个参数传入。
receiveBody() 方法允许你轻松地从端点接收任意对象,示例如下:
ConsumerTemplate template = exchange.getContext().createConsumerTemplate();
// recieve from default endpoint
Object body = template.receiveBody();
// receive from a specific queue
body = template.receiveBody("activemq:MyQueue");接收模式
消费者模板(Consumer Template)有三种工作模式:
- receive —— 从端点消费,等待直到有消息为止(可能会等待很长时间!)。
- receiveNoWait —— 从端点消费,如果没有消息则不等待。
- receiveTimeout —— 从端点消费,等待直到收到响应或发生超时。
在前面的示例中,我们使用的是第一种模式(receiveBody)。例如,如果 activemq:MyQueue 上没有消息,Camel 将会一直等待,直到有消息发送到该队列。
通常你并不希望无限期地等待,因此使用超时值(例如 5 秒)往往是个好主意:
ConsumerTemplate template = exchange.getContext().createConsumerTemplate();
// receive from a specific queue
body = template.receiveBody("activemq:MyQueue", 5000);在此,我们最多等待 5 秒以消费一条消息,如果没有消息,则返回 null 作为响应。
配置默认缓存大小
你可以全局配置 ProducerTemplate 和 ConsumerTemplate 的默认缓存大小,这些模板将由 CamelContext 创建或通过依赖注入提供。
可以在 CamelContext 上将其作为一个全局选项进行配置,如以下 Java 代码所示:
getCamelContext().getGlobalOptions().put(Exchange.MAXIMUM_CACHE_POOL_SIZE, "50");或者在 application.properties 中:
camel.main.consumerTemplateCacheSize = 50默认的最大缓存大小为 1000。
另请参阅
评论
登录后参与评论
正在加载评论…
KnowForge