37.3. 使用 Consumer 模板
概述 复制链接链接已复制到粘贴板!
consumer 模板提供了轮询消费者端点的方法,以接收传入的消息。您可以选择以交换对象的形式接收传入的消息,或者以消息正文的形式接收传入的消息(消息正文可以使用内置类型转换器将其转换为特定类型的特定类型)。
轮询交换示例 复制链接链接已复制到粘贴板!
您可以使用以下轮询方法之一轮询消费者端点以进行交换:block receive (); receive () with a timeout; 或 receiveNoWait (),它会立即返回。由于消费者端点表示服务,因此在尝试轮询交换之前,通过调用 start () 来启动服务线程。
以下示例演示了如何使用 block receive () 方法从 seda:foo 消费者端点轮询交换:
其中,消费者模板实例( 消费者 )使用 CamelContext.createConsumerTemplate () 方法实例化,并且消费者服务线程通过调用 ConsumerTemplate.start () 启动。
轮询消息正文示例 复制链接链接已复制到粘贴板!
您还可以使用以下任一方法为传入消息正文轮询消费者端点:block receiveBody (); with a timeout; 或 receiveBody () receiveBodyNoWait (),它会立即返回。如上例所示,在尝试轮询交换之前,还需要通过调用 start () 来启动服务线程。
以下示例演示了如何使用 blocking receiveBody () 方法从 seda:foo 消费者端点轮询传入的消息正文:
轮询交换的方法 复制链接链接已复制到粘贴板!
从消费者端点轮询 交换 的基本方法: 没有超时块;接收(对于指定周期为毫秒)的 receive () receive () ;接收NoWait () 为非阻塞。您可以将消费者端点指定为端点 URI 或 Endpoint 实例。
轮询消息正文的方法 复制链接链接已复制到粘贴板!
从消费者端点轮询 消息正文 的基本方法: receiveBody () 没有无限期的超时块: receiveBody (),具有指定周期为 timeout 块的 receiveBody ();而 receiveBodyNoWait () 是非阻塞状态。您可以将消费者端点指定为端点 URI 或 Endpoint 实例。此外,通过调用这些方法的模板形式,您可以使用内置类型转换器将返回的正文转换为特定类型的 T。
M