本文整理汇总了Golang中github.com/Shopify/sarama.NewConsumer函数的典型用法代码示例。如果您正苦于以下问题:Golang NewConsumer函数的具体用法?Golang NewConsumer怎么用?Golang NewConsumer使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了NewConsumer函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: NewPeer
// NewPeer creates and returns a new Peer for communicating with Kafka.
func NewPeer(host string) (*Peer, error) {
host = strings.Split(host, ":")[0] + ":9092"
config := sarama.NewConfig()
client, err := sarama.NewClient([]string{host}, config)
if err != nil {
return nil, err
}
producer, err := sarama.NewAsyncProducer([]string{host}, config)
if err != nil {
return nil, err
}
consumer, err := sarama.NewConsumer([]string{host}, config)
if err != nil {
return nil, err
}
partitionConsumer, err := consumer.ConsumePartition(topic, 0, sarama.OffsetNewest)
if err != nil {
return nil, err
}
return &Peer{
client: client,
producer: producer,
consumer: partitionConsumer,
send: make(chan []byte),
errors: make(chan error, 1),
done: make(chan bool),
}, nil
}
开发者ID:huikang,项目名称:Flotilla,代码行数:33,代码来源:kafka.go
示例2: NewKafka
func NewKafka(numberOfMessages int, testLatency bool) *Kafka {
pubClient, _ := sarama.NewClient("pub", []string{"localhost:9092"}, sarama.NewClientConfig())
subClient, _ := sarama.NewClient("sub", []string{"localhost:9092"}, sarama.NewClientConfig())
topic := "test"
pub, _ := sarama.NewProducer(pubClient, sarama.NewProducerConfig())
consumerConfig := sarama.NewConsumerConfig()
consumerConfig.OffsetMethod = sarama.OffsetMethodNewest // Only read new messages
consumerConfig.DefaultFetchSize = 10 * 1024 * 1024
sub, _ := sarama.NewConsumer(subClient, topic, 0, "test", consumerConfig)
var handler benchmark.MessageHandler
if testLatency {
handler = &benchmark.LatencyMessageHandler{
NumberOfMessages: numberOfMessages,
Latencies: []float32{},
}
} else {
handler = &benchmark.ThroughputMessageHandler{NumberOfMessages: numberOfMessages}
}
return &Kafka{
handler: handler,
pubClient: pubClient,
subClient: subClient,
pub: pub,
sub: sub,
topic: topic,
}
}
开发者ID:hitomi333,项目名称:mq-benchmarking,代码行数:30,代码来源:kafka.go
示例3: main
func main() {
client, err := kafka.NewClient("my_client", []string{"localhost:9092"}, nil)
if err != nil {
panic(err)
} else {
fmt.Println("> connected")
}
defer client.Close()
consumer, err := kafka.NewConsumer(client, "my_topic", 0, "my_consumer_group", kafka.NewConsumerConfig())
if err != nil {
panic(err)
} else {
fmt.Println("> consumer ready")
}
defer consumer.Close()
msgCount := 0
consumerLoop:
for {
select {
case event := <-consumer.Events():
if event.Err != nil {
panic(event.Err)
}
msgCount++
case <-time.After(5 * time.Second):
fmt.Println("> timed out")
break consumerLoop
}
}
fmt.Println("Got", msgCount, "messages.")
}
开发者ID:yoCruzer,项目名称:go-snippets,代码行数:33,代码来源:main.go
示例4: NewKafkaSubscriber
// NewKafkaSubscriber will initiate a the experimental Kafka consumer.
func NewKafkaSubscriber(cfg *config.Kafka, offsetProvider func() int64, offsetBroadcast func(int64)) (*KafkaSubscriber, error) {
var (
err error
)
s := &KafkaSubscriber{
offset: offsetProvider,
broadcastOffset: offsetBroadcast,
partition: cfg.Partition,
stop: make(chan chan error, 1),
}
if len(cfg.BrokerHosts) == 0 {
return s, errors.New("at least 1 broker host is required")
}
if len(cfg.Topic) == 0 {
return s, errors.New("topic name is required")
}
s.topic = cfg.Topic
sconfig := sarama.NewConfig()
sconfig.Consumer.Return.Errors = true
s.cnsmr, err = sarama.NewConsumer(cfg.BrokerHosts, sconfig)
return s, err
}
开发者ID:strogo,项目名称:gizmo,代码行数:26,代码来源:kafka.go
示例5: NewPartitionConsumer
// NewPartitionConsumer creates a new partition consumer instance
func NewPartitionConsumer(group *ConsumerGroup, partition int32) (*PartitionConsumer, error) {
config := sarama.ConsumerConfig{
DefaultFetchSize: group.config.DefaultFetchSize,
EventBufferSize: group.config.EventBufferSize,
MaxMessageSize: group.config.MaxMessageSize,
MaxWaitTime: group.config.MaxWaitTime,
MinFetchSize: group.config.MinFetchSize,
OffsetMethod: sarama.OffsetMethodOldest,
}
offset, err := group.Offset(partition)
if err != nil {
return nil, err
} else if offset > 0 {
config.OffsetMethod = sarama.OffsetMethodManual
config.OffsetValue = offset
}
stream, err := sarama.NewConsumer(group.client, group.topic, partition, group.name, &config)
if err != nil {
return nil, err
}
return &PartitionConsumer{
stream: stream,
topic: group.topic,
partition: partition,
}, nil
}
开发者ID:rsrsps,项目名称:sarama-1,代码行数:30,代码来源:partition_consumer.go
示例6: main
func main() {
brokers := flag.String("brokers", "localhost:9093", "Comma separated kafka brokers list")
topic := flag.String("topic", "my-topic", "Kafka topic to send messages to")
flag.Parse()
logger := log.New(os.Stdout, "consumer ", log.Lmicroseconds)
consumer, err := sarama.NewConsumer(strings.Split(*brokers, ","), nil)
if err != nil {
logger.Panicln(err)
}
defer func() {
if err := consumer.Close(); err != nil {
logger.Fatalln(err)
}
}()
partitionConsumer, err := consumer.ConsumePartition(*topic, 0, sarama.OffsetNewest)
if err != nil {
logger.Panicln(err)
}
logger.Println("Start")
i := 0
for ; ; i++ {
msg := <-partitionConsumer.Messages()
if string(msg.Value) == "THE END" {
break
}
}
logger.Printf("Finished. Received %d messages.\n", i)
}
开发者ID:C-Pro,项目名称:go-kafka-test,代码行数:34,代码来源:consumer.go
示例7: main
func main() {
client, err := sarama.NewClient("a_logger_for_mhub", []string{"localhost:9092"}, nil)
if err != nil {
panic(err)
} else {
os.Stderr.WriteString("> connected\n")
}
defer client.Close()
consumer, err := sarama.NewConsumer(client, "received", 0, "", nil)
if err != nil {
panic(err)
} else {
os.Stderr.WriteString("> consumer ready\n")
}
defer consumer.Close()
for {
select {
case event := <-consumer.Events():
if event.Err != nil {
panic(event.Err)
}
fmt.Println(utf8.FullRune(event.Value))
}
}
}
开发者ID:kaiserprogrammer,项目名称:mhub,代码行数:27,代码来源:main.go
示例8: main
func main() {
flag.Parse()
config := sarama.NewConfig()
config.Consumer.Return.Errors = true
consumer, err := sarama.NewConsumer(brokers, config)
if err != nil {
log.Fatalln(err)
}
defer func() {
if err := consumer.Close(); err != nil {
panic(err)
}
}()
var pf ProcessFunc
switch {
case "+" == op:
pf = processAdd
case "-" == op:
pf = processSub
case "*" == op:
pf = processMul
case "/" == op:
pf = processDiv
}
// Set up one partition_consumer for each partition
partitions, err := consumer.Partitions(topic)
if err != nil {
log.Fatalln(err)
}
partition_consumers := make([]sarama.PartitionConsumer, len(partitions))
for idx, partition := range partitions {
pc, err := consumer.ConsumePartition(topic, partition, sarama.OffsetNewest)
if err != nil {
log.Fatalln(err)
}
partition_consumers[idx] = pc
go func(pc sarama.PartitionConsumer) {
Serve(pc.Messages(), pf)
}(pc)
go func(pc sarama.PartitionConsumer) {
for err := range pc.Errors() {
log.Println(err)
}
}(pc)
}
signals := make(chan os.Signal, 1)
signal.Notify(signals, os.Interrupt)
<-signals
for _, pc := range partition_consumers {
fmt.Println("Closing partition, next offset", pc.HighWaterMarkOffset())
pc.AsyncClose()
}
}
开发者ID:nickmarrone,项目名称:go_kafka_test,代码行数:60,代码来源:consumer.go
示例9: main
func main() {
config := sarama.NewConfig()
// Handle errors manually
config.Consumer.Return.Errors = true
consumer, err := sarama.NewConsumer([]string{kafkaAddr}, config)
if err != nil {
panic(err)
}
defer consumer.Close()
logConsumer, err := consumer.ConsumePartition("buy", 0, sarama.OffsetNewest)
if err != nil {
panic(err)
}
defer logConsumer.Close()
signals := make(chan os.Signal, 1)
signal.Notify(signals, os.Interrupt)
for {
select {
case err := <-logConsumer.Errors():
log.Println(err)
case msg := <-logConsumer.Messages():
order := &Order{}
json.Unmarshal(msg.Value, order)
log.Printf("notification to %s with order %s", order.UserID, order.OrderID)
case <-signals:
return
}
}
}
开发者ID:thanhliem89dn,项目名称:microservices-book-code,代码行数:33,代码来源:notification.go
示例10: newConsumer
func newConsumer() (masterConsumer kafka.Consumer, consumers []kafka.PartitionConsumer) {
config := kafka.NewConfig()
config.Net.KeepAlive = 30 * time.Second
config.Consumer.Retry.Backoff = 25 * time.Millisecond
consumers = make([]kafka.PartitionConsumer, 0)
retry(func() (err error) {
var consumer kafka.PartitionConsumer
var partitions []int32
masterConsumer, err = kafka.NewConsumer(kafkas, config)
if err != nil {
return
}
partitions, err = masterConsumer.Partitions(topic)
if err != nil {
return
}
for _, partition := range partitions {
consumer, err = masterConsumer.ConsumePartition(topic, partition, kafka.OffsetNewest)
if err != nil {
return
}
consumers = append(consumers, consumer)
}
return
})
return
}
开发者ID:nanoservice,项目名称:core-fanout,代码行数:34,代码来源:main.go
示例11: Setup
// Setup prepares the Requester for benchmarking.
func (k *kafkaRequester) Setup() error {
config := sarama.NewConfig()
producer, err := sarama.NewAsyncProducer(k.urls, config)
if err != nil {
return err
}
consumer, err := sarama.NewConsumer(k.urls, nil)
if err != nil {
producer.Close()
return err
}
partitionConsumer, err := consumer.ConsumePartition(k.topic, 0, sarama.OffsetNewest)
if err != nil {
producer.Close()
consumer.Close()
return err
}
k.producer = producer
k.consumer = consumer
k.partitionConsumer = partitionConsumer
k.msg = &sarama.ProducerMessage{
Topic: k.topic,
Value: sarama.ByteEncoder(make([]byte, k.payloadSize)),
}
return nil
}
开发者ID:actourex,项目名称:bench,代码行数:30,代码来源:kafka_requester.go
示例12: tailPartitions
func tailPartitions(client *sarama.Client, topic string, partitions []int32) {
var wg sync.WaitGroup
wg.Add(len(partitions))
tailConsumer := func(partition int32) {
defer wg.Done()
consumerConfig := sarama.NewConsumerConfig()
consumerConfig.OffsetMethod = sarama.OffsetMethodManual
consumerConfig.OffsetValue = offset
consumer, err := sarama.NewConsumer(client, topic, partition, "", consumerConfig)
if err != nil {
logger.Fatalf("err creating consumer: %s", err)
}
defer consumer.Close()
for event := range consumer.Events() {
logger.Printf("partition=%d offset=%d key=%s value=%s", event.Partition, event.Offset, event.Key, event.Value)
}
}
for _, partition := range partitions {
go tailConsumer(partition)
}
wg.Wait()
}
开发者ID:partkyle,项目名称:kafka-examples,代码行数:28,代码来源:main.go
示例13: newTestConsumer
func newTestConsumer(t *testing.T) sarama.Consumer {
hosts := []string{getTestKafkaHost()}
consumer, err := sarama.NewConsumer(hosts, nil)
if err != nil {
t.Fatal(err)
}
return consumer
}
开发者ID:ChongFeng,项目名称:beats,代码行数:8,代码来源:kafka_integration_test.go
示例14: newKafkaConsumer
// Creates a kafka consumer utilizing github.com/Shopify/sarama
func newKafkaConsumer(broker string) (kafka.Consumer, error) {
config := kafka.NewConfig()
consumer, err := kafka.NewConsumer([]string{broker}, config)
if err != nil {
return nil, err
}
return consumer, nil
}
开发者ID:arichardet,项目名称:cadvisor-monasca,代码行数:10,代码来源:main.go
示例15: NewConsumer
func (c *KafkaClient) NewConsumer(hostports []string) error {
consumer, err := sarama.NewConsumer(hostports, nil)
if err != nil {
log.Printf("[kafka] new a consumer %+v error, %s\n", hostports, err)
} else {
log.Printf("[kafka] new a consumer %+v success.\n", hostports)
}
c.Consumer = consumer
return err
}
开发者ID:orange-jacky,项目名称:get_kafka,代码行数:10,代码来源:kafka.go
示例16: Test01
func (suite *KafkaTester) Test01() {
t := suite.T()
assert := assert.New(t)
const M1 = "message one"
const M2 = "message two"
var producer sarama.AsyncProducer
var consumer sarama.Consumer
var partitionConsumer sarama.PartitionConsumer
var err error
topic := makeTopicName()
{
config := sarama.NewConfig()
config.Producer.Return.Successes = false
config.Producer.Return.Errors = false
producer, err = sarama.NewAsyncProducer([]string{suite.server}, config)
assert.NoError(err)
defer close(t, producer)
producer.Input() <- &sarama.ProducerMessage{
Topic: topic,
Key: nil,
Value: sarama.StringEncoder(M1)}
producer.Input() <- &sarama.ProducerMessage{
Topic: topic,
Key: nil,
Value: sarama.StringEncoder(M2)}
}
{
consumer, err = sarama.NewConsumer([]string{suite.server}, nil)
assert.NoError(err)
defer close(t, consumer)
partitionConsumer, err = consumer.ConsumePartition(topic, 0, 0)
assert.NoError(err)
defer close(t, partitionConsumer)
}
{
mssg1 := <-partitionConsumer.Messages()
//t.Logf("Consumed: offset:%d value:%v", mssg1.Offset, string(mssg1.Value))
mssg2 := <-partitionConsumer.Messages()
//t.Logf("Consumed: offset:%d value:%v", mssg2.Offset, string(mssg2.Value))
assert.EqualValues(M1, string(mssg1.Value))
assert.EqualValues(M2, string(mssg2.Value))
}
}
开发者ID:venicegeo,项目名称:pz-logger,代码行数:55,代码来源:sys_test.go
示例17: GetConsumer
func GetConsumer() sarama.Consumer {
config := sarama.NewConfig()
consumer, err := sarama.NewConsumer(brokerList, config)
if err != nil {
log.Fatalln("Failed to start Sarama consumer", err)
}
return consumer
}
开发者ID:esiqveland,项目名称:kafka-workshop,代码行数:11,代码来源:bootstrap.go
示例18: NewConsumer
func (c *KafkaClient) NewConsumer(conf *Configure) error {
hostports := conf.Kafka.Hosts
consumer, err := sarama.NewConsumer(hostports, nil)
if err != nil {
log.Printf("[kafka] new a consumer %+v error, %s\n", hostports, err)
} else {
log.Printf("[kafka] new a consumer %+v success.\n", hostports)
}
c.Consumer = consumer
return err
}
开发者ID:orange-jacky,项目名称:flight_index,代码行数:11,代码来源:kafka.go
示例19: NewReader
func NewReader(kafkaHost string) *Reader {
r := new(Reader)
consumer, err := sarama.NewConsumer([]string{kafkaHost}, nil)
if err != nil {
panic(err)
}
r.consumer = consumer
return r
}
开发者ID:venicegeo,项目名称:mpg-sandbox,代码行数:12,代码来源:kafka.go
示例20: main
func main() {
config := sarama.NewConfig()
config.Consumer.Return.Errors = true
// Specify brokers address. This is default one
brokers := []string{"localhost:9092"}
// Create new consumer
master, err := sarama.NewConsumer(brokers, config)
if err != nil {
panic(err)
}
defer func() {
if err := master.Close(); err != nil {
panic(err)
}
}()
topic := "important"
// How to decide partition, is it fixed value...?
consumer, err := master.ConsumePartition(topic, 0, sarama.OffsetOldest)
if err != nil {
panic(err)
}
signals := make(chan os.Signal, 1)
signal.Notify(signals, os.Interrupt)
// Count how many message processed
msgCount := 0
// Get signnal for finish
doneCh := make(chan struct{})
go func() {
for {
select {
case err := <-consumer.Errors():
fmt.Println(err)
case msg := <-consumer.Messages():
msgCount++
fmt.Println("Received messages", string(msg.Key), string(msg.Value))
case <-signals:
fmt.Println("Interrupt is detected")
doneCh <- struct{}{}
}
}
}()
<-doneCh
fmt.Println("Processed", msgCount, "messages")
}
开发者ID:hyndio,项目名称:go-kafka,代码行数:53,代码来源:main.go
注:本文中的github.com/Shopify/sarama.NewConsumer函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论