// Copyright (C) 2019-2020 Zilliz. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance // with the License. You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software distributed under the License // is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express // or implied. See the License for the specific language governing permissions and limitations under the License. package mqclient type SubscriptionInitialPosition int const ( // Latest position which means the start consuming position will be the last message SubscriptionPositionLatest SubscriptionInitialPosition = iota // Earliest position which means the start consuming position will be the first message SubscriptionPositionEarliest ) type SubscriptionType int const ( // Exclusive there can be only 1 consumer on the same topic with the same subscription name Exclusive SubscriptionType = iota // Shared subscription mode, multiple consumer will be able to use the same subscription name // and the messages will be dispatched according to // a round-robin rotation between the connected consumers Shared // Failover subscription mode, multiple consumer will be able to use the same subscription name // but only 1 consumer will receive the messages. // If that consumer disconnects, one of the other connected consumers will start receiving messages. Failover // KeyShared subscription mode, multiple consumer will be able to use the same // subscription and all messages with the same key will be dispatched to only one consumer KeyShared ) type UniqueID = int64 type ConsumerOptions struct { // The topic that this consumer will subscribe on Topic string // The subscription name for this consumer SubscriptionName string // InitialPosition at which the cursor will be set when subscribe // Default is `Latest` SubscriptionInitialPosition // Message for this consumer // When a message is received, it will be pushed to this channel for consumption MessageChannel chan ConsumerMessage // Set receive channel size BufSize int64 // Select the subscription type to be used when subscribing to the topic. // Default is `Exclusive` Type SubscriptionType } type Consumer interface { // returns the subscription for the consumer Subscription() string // Message channel Chan() <-chan ConsumerMessage // Seek to the uniqueID position Seek(MessageID) error //nolint:govet // Make sure that msg is received. Only used in pulsar Ack(ConsumerMessage) // Close consumer Close() }