7.1Creating 创建操作 - Create/Defer/From/Just/Start/Repeat/Range

本文详细介绍了一系列创建Observable的方法,包括just、from、repeat、repeatWhen、create、defer等,覆盖了不同场景下创建Observable的需求。

这个页面展示了创建Observable的各种方法。

  • just( ) — 将一个或多个对象转换成发射这个或这些对象的一个Observable
  • from( ) — 将一个Iterable, 一个Future, 或者一个数组转换成一个Observable
  • repeat( ) — 创建一个重复发射指定数据或数据序列的Observable
  • repeatWhen( ) — 创建一个重复发射指定数据或数据序列的Observable,它依赖于另一个Observable发射的数据
  • create( ) — 使用一个函数从头创建一个Observable
  • defer( ) — 只有当订阅者订阅才创建Observable;为每个订阅创建一个新的Observable
  • range( ) — 创建一个发射指定范围的整数序列的Observable
  • interval( ) — 创建一个按照给定的时间间隔发射整数序列的Observable
  • timer( ) — 创建一个在给定的延时之后发射单个数据的Observable
  • empty( ) — 创建一个什么都不做直接通知完成的Observable
  • error( ) — 创建一个什么都不做直接通知错误的Observable
  • never( ) — 创建一个不发射任何数据的Observable
在使用 `franz-go` 实现 Kafka 生产者和消费者时,主要依赖其提供的 `kgo` 包来构建客户端实例,并通过配置选项定义生产与消费行为。以下是一个完整的示例代码,涵盖如何创建生产者发送消息以及消费者接收并处理消息的流程。 ### 初始化 Kafka 客户端 首先,在主函数中初始化 Kafka 客户端,并设置必要的配置参数,包括种子节点、消费者组、订阅主题等: ```go package main import ( "context" "fmt" "github.com/twmb/franz-go/pkg/kgo" ) func main() { seeds := []string{"localhost:9092"} topic := "example-topic" groupID := "example-group" cl, err := kgo.NewClient( kgo.SeedBrokers(seeds...), kgo.ConsumerGroup(groupID), kgo.ConsumeTopics(topic), ) if err != nil { panic(err) } defer cl.Close() ctx := context.Background() // 启动消费者协程 go consumeMessages(cl) // 发送一条测试消息 err = cl.Produce(ctx, topic, kgo.StringEncoder("Hello from franz-go producer!")) if err != nil { fmt.Printf("Failed to produce message: %v\n", err) } } // 消费消息的函数 func consumeMessages(cl *kgo.Client) { for { fetches := cl.PollFetches(context.Background()) iter := fetches.RecordIter() for !iter.Done() { record := iter.Next() fmt.Printf("Received message: %s (topic: %s, partition: %d)\n", record.Value, record.Topic, record.Partition) } } } ``` ### 代码说明 - **生产者逻辑**:通过 `cl.Produce()` 方法将消息发送到指定的 Kafka 主题。 - **消费者逻辑**:调用 `cl.PollFetches()` 获取拉取的数据批次,使用迭代器遍历每条记录并打印出来[^4]。 - **错误处理**:在实际部署中应加入更完善的重试机制和日志记录功能以提高系统可靠性。 ### 扩展性考虑 该示例仅演示了基本的生产和消费操作。在大型分布式系统中,可以结合 goroutine 和 channel 实现并发消费,或引入更多高级特性如事务支持、自定义序列化器/反序列化器等[^1]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值