Pulsar4s 使用教程
项目介绍
Pulsar4s 是一个用于 Apache Pulsar 的 Scala 客户端库,提供了简洁、惯用、响应式和类型安全的方式来与 Apache Pulsar 进行交互。作为 Java 客户端的简单封装,Pulsar4s 继承了 Java 客户端的可靠性和性能,同时更好地集成了 Scala 生态系统和惯用语法。Pulsar4s 支持多种效果库,包括 Scala 的 Future
、Monix 的 Task
、Cats Effect 的 IO
和 Scalaz 的 Task
。
项目快速启动
添加依赖
首先,在你的 build.sbt
文件中添加 Pulsar4s 依赖:
libraryDependencies += "com.clever-cloud.pulsar4s" %% "pulsar4s-core" % "2.7.0"
创建生产者和消费者
以下是一个简单的示例,展示如何创建一个生产者和消费者来发送和接收消息:
import com.sksamuel.pulsar4s._
import scala.concurrent.ExecutionContext.Implicits.global
val client = PulsarClient("pulsar://localhost:6650")
val topic = Topic("persistent://sample/standalone/ns1/my-topic")
val producer = client.producer[String](ProducerConfig(topic))
val consumer = client.consumer[String](ConsumerConfig(Seq(topic), "my-subscription"))
// 发送消息
val messageId = producer.send("Hello, Pulsar!")
println(s"Sent message: $messageId")
// 接收消息
val message = consumer.receive
println(s"Received message: ${message.get.value}")
// 清理资源
producer.close()
consumer.close()
client.close()
应用案例和最佳实践
使用不同的效果库
Pulsar4s 支持多种效果库,可以根据你的项目需求选择合适的效果库。以下是一些示例:
使用 Cats Effect
libraryDependencies += "com.clever-cloud.pulsar4s" %% "pulsar4s-cats-effect" % "2.7.0"
import com.sksamuel.pulsar4s.cats.CatsAsyncHandler._
import cats.effect.IO
val producer = client.producer[String](ProducerConfig(topic))
val consumer = client.consumer[String](ConsumerConfig(Seq(topic), "my-subscription"))
// 发送消息
val sendIO = producer.sendAsync("Hello, Pulsar!")
sendIO.unsafeRunSync()
// 接收消息
val receiveIO = consumer.receiveAsync
val message = receiveIO.unsafeRunSync()
println(s"Received message: ${message.value}")
使用 Schema 支持
Pulsar4s 支持多种 Schema 库,如 Circe、Jackson、Json4s、Spray-Json 和 Play-Json。以下是使用 Circe 的示例:
libraryDependencies += "com.clever-cloud.pulsar4s" %% "pulsar4s-circe" % "2.7.0"
import com.sksamuel.pulsar4s.circe._
import io.circe.generic.auto._
case class Food(name: String, description: String)
val producer = client.producer[Food](ProducerConfig(topic))
val consumer = client.consumer[Food](ConsumerConfig(Seq(topic), "my-subscription"))
// 发送消息
val messageId = producer.send(Food("pizza", "ham and pineapple"))
println(s"Sent message: $messageId")
// 接收消息
val message = consumer.receive
println(s"Received message: ${message.get.value}")
典型生态项目
Pulsar4s 可以与多种 Scala 生态系统中的库集成,以下是一些典型的生态项目:
- Akka Streams: 使用
pulsar4s-akka-streams
模块可以与 Akka Streams 集成。 - FS2: 使用
pulsar4s-fs2
模块可以与 FS2 集成。 - Monix: 使用 `pulsar4s-monix