开发解决方案
此解决方案的每个部分都使用 Java 实现,并使用 Maven 检索所需依赖项(如其 POM 文件所定义)。它包括通过调用 Maven 来编译和执行代码来运行应用程序的简单 shell 脚本。
运行脚本之前,需要在每种情况下修改 Environment 类以定义适当的连接详细信息,例如队列 OCID、部署区域等。对于函数和微服务,由于代码在容器内执行,因此需要执行一些额外的步骤。系统信息库中的自述文件介绍了在容器内包装 JAR 所需的步骤。在部署之前,函数和 OKE 托管的微服务的可执行文物都位于容器注册表 (Container Registry,OCIR) 中。
定制生产者代码
生成器实现 (
com.demo.samples.basic.QueueProducer) 非常简单,由 main 方法和另外两种有助于生成消息内容的方法组成。main 方法可构建连接和传输对象,然后进入无限循环来创建新消息并发送它们。要定制该方法的有效负载,只需修改 prepareMessage。当前,此方法使用 GUID 创建一条简单消息,并利用 OCI 队列允许 API 一次发送 20 条消息这一事实。
量身定制消费者代码
使用者 (
com.demo.consumer.QueueConsumer) 从通过 OKE 配置推送的环境变量中获取其配置。这样可以非常轻松地将使用者重新配置到不同的队列。批量工作是在 main 方法中进行的,当它具有队列连接时,会执行消息请求。名为 prepareGetMessageRequest 的辅助方法创建消息请求本身。该方法标识特定队列并设置 prepareGetMessageRequeston 将等待响应的持续时间(允许您配置长时间轮询)和可返回的最大消息数(最多 20 个)。
检索消息后,
当
processMessage 方法将处理它们。
注:
在本手册中,该过程只是休眠,尽管您应该了解,实际应用程序可能需要一些时间来处理消息。processMessage 方法应用线程休眠来模拟后端消息处理工作负荷时,您将看到扩展机制的工作方式。处理所有接收的消息后,系统会通知队列将其删除。