コード例 #1
0
ファイル: consumer.go プロジェクト: likun123687/rmq
func (consumer *Consumer) Consume(delivery rmq.Delivery) {
	consumer.count++
	if consumer.count%batchSize == 0 {
		duration := time.Now().Sub(consumer.before)
		consumer.before = time.Now()
		perSecond := time.Second / (duration / batchSize)
		log.Printf("%s consumed %d %s %d", consumer.name, consumer.count, delivery.Payload(), perSecond)
	}
	time.Sleep(time.Millisecond)
	if consumer.count%batchSize == 0 {
		delivery.Reject()
	} else {
		delivery.Ack()
	}
}
コード例 #2
0
// Interface from rmq
func (r *RedisQueue) Consume(delivery rmq.Delivery) {
	fmt.Println("Got event from queue:", delivery.Payload())

	event := entities.Event{}

	if err := json.Unmarshal([]byte(delivery.Payload()), &event); err != nil {
		fmt.Println("Error consuming event, unable to deserialise event")
		// handle error
		delivery.Reject()
		return
	}
	delivery.Ack()

	r.callback(&event)
}