public static KafkaBatchContainer ToBatchContainer(
            this ConsumeResult <byte[], byte[]> result,
            SerializationContext serializationContext,
            QueueProperties queueProperties
            )
        {
            var sequence = new EventSequenceTokenV2(result.Offset.Value);

            if (queueProperties.IsExternal)
            {
                var key = Encoding.UTF8.GetString(result.Key);
                return(new KafkaExternalBatchContainer(
                           StreamProviderUtils.GenerateStreamGuid(key),
                           queueProperties,
                           new List <byte[]> {
                    result.Value
                },
                           sequence,
                           result.TopicPartitionOffset,
                           serializationContext.ExternalStreamDeserializer
                           ));
            }

            var serializationManager = serializationContext.SerializationManager;
            var batchContainer       = serializationManager.DeserializeFromByteArray <KafkaBatchContainer>(result.Value);

            if (batchContainer.SequenceToken == null)
            {
                batchContainer.SequenceToken = sequence;
            }

            batchContainer.TopicPartitionOffSet = result.TopicPartitionOffset;

            return(batchContainer);
        }
Beispiel #2
0
        public static KafkaBatchContainer ToBatchContainer(
            this ConsumeResult <byte[], byte[]> result,
            SerializationContext serializationContext,
            QueueProperties queueProperties
            )
        {
            var sequence = new EventSequenceTokenV2(result.Offset.Value);

            if (queueProperties.IsExternal)
            {
                var key = Encoding.UTF8.GetString(result.Message.Key);

                var message = serializationContext
                              .ExternalStreamDeserializer
                              .Deserialize(queueProperties, queueProperties.ExternalContractType, result.Message.Value);

                return(new KafkaBatchContainer(
                           StreamProviderUtils.GenerateStreamGuid(key),
                           queueProperties.Namespace,
                           new List <object> {
                    message
                },
                           null,
                           sequence,
                           result.TopicPartitionOffset
                           ));
            }

            var serializationManager = serializationContext.SerializationManager;
            var batchContainer       = serializationManager.DeserializeFromByteArray <KafkaBatchContainer>(result.Message.Value);

            batchContainer.SequenceToken ??= sequence;
            batchContainer.TopicPartitionOffSet = result.TopicPartitionOffset;

            return(batchContainer);
        }