Refine Kafka persistence topic boundaries
This commit is contained in:
@@ -24,6 +24,7 @@ var publishKafkaMessagePersist = publishKafkaEnvelope
|
||||
|
||||
func startKafkaMessagePersistConsumer() {
|
||||
startKafkaConsumer("message_persist", handleKafkaMessagePersist)
|
||||
startKafkaConsumer("group_message_persist", handleKafkaGroupMessagePersist)
|
||||
}
|
||||
|
||||
func saveMessageMaybeKafka(ctx context.Context, tenantID types.TenantID, msg *types.Message, attachmentURLs []string, readBySender bool) (*types.MessageSaveResult, error) {
|
||||
@@ -79,10 +80,18 @@ func enqueueKafkaMessagePersist(ctx context.Context, tenantID types.TenantID, ms
|
||||
Actor: &kafkaActor{Type: "user", ID: types.ParseUid(msg.From).UserId()},
|
||||
Payload: payload,
|
||||
}
|
||||
return publishKafkaMessagePersist(ctx, "message_persist", msg.Topic, envelope)
|
||||
return publishKafkaMessagePersist(ctx, kafkaMessagePersistTopicName(msg.Topic), msg.Topic, envelope)
|
||||
}
|
||||
|
||||
func handleKafkaMessagePersist(ctx context.Context, envelope kafkaEnvelope, _ kafka.Message) error {
|
||||
return handleKafkaMessagePersistFromTopic(ctx, envelope, "message_persist")
|
||||
}
|
||||
|
||||
func handleKafkaGroupMessagePersist(ctx context.Context, envelope kafkaEnvelope, _ kafka.Message) error {
|
||||
return handleKafkaMessagePersistFromTopic(ctx, envelope, "group_message_persist")
|
||||
}
|
||||
|
||||
func handleKafkaMessagePersistFromTopic(ctx context.Context, envelope kafkaEnvelope, sourceTopicName string) error {
|
||||
tenantID := envelope.TenantID
|
||||
var err error
|
||||
if tenantID.IsZero() {
|
||||
@@ -91,7 +100,7 @@ func handleKafkaMessagePersist(ctx context.Context, envelope kafkaEnvelope, _ ka
|
||||
return err
|
||||
}
|
||||
}
|
||||
consume, claimed, err := beginKafkaConsumeForTopic(tenantID, envelope, "message_persist")
|
||||
consume, claimed, err := beginKafkaConsumeForTopic(tenantID, envelope, sourceTopicName)
|
||||
if err != nil || !claimed {
|
||||
return err
|
||||
}
|
||||
@@ -137,6 +146,13 @@ func handleKafkaMessagePersist(ctx context.Context, envelope kafkaEnvelope, _ ka
|
||||
return store.HTTPInfrastructure.MarkKafkaConsumeSucceeded(tenantID, envelope.EventID, kafkaBus.config.ConsumerGroup, time.Now().UTC().Round(time.Millisecond))
|
||||
}
|
||||
|
||||
func kafkaMessagePersistTopicName(topic string) string {
|
||||
if types.GetTopicCat(topic) == types.TopicCatGrp {
|
||||
return "group_message_persist"
|
||||
}
|
||||
return "message_persist"
|
||||
}
|
||||
|
||||
func validateKafkaMessageKind(payload kafkaMessagePersistPayload) error {
|
||||
if payload.Message.Topic == "" || payload.Message.SeqId <= 0 {
|
||||
return types.ErrMalformed
|
||||
|
||||
Reference in New Issue
Block a user