2017-10-10 8 views
0

Je veux démarrer un consommateur en kafka pour un sujet particulier dans un petit délai. Dans le détail, je veux que le consommateur commence à consommer les messages du sujet après un délai particulier à partir du moment de la production des messages. Quelqu'un peut-il dire est-il une propriété ou une option en kafka pour l'activer. Merci d'avance.Apache kafka - option de délai consommateur

+0

Dès que le producteur envoie le message 'Kafka' il va dans les journaux Kafka et devient disponible pour la consommation à consommer. Je ne vois aucune propriété dans Kafka Documentation qui vous donne une option pour retarder la consommation par rapport à chaque message (je serais heureux d'en savoir plus s'il y en a un). Cependant, vous avez le contrôle sur la consommation de messages afin que vous puissiez commencer votre client un peu en retard par rapport au producteur. – Explorer

Répondre

0

Nous avons fait la même chose pour le streaming. J'espère que l'approche peut vous convenir aussi. L'idée est très simple - utilisez Thread.sleep. Lorsque vous recevez un nouveau message de Kafka, vous pouvez calculer combien de temps avez-vous besoin de dormir avant de le traiter.

idée pour pseudocode:

message = getNextMessageFromKafka() 
sleepMs = Math.max(0, currentTime - message.timestamp) 
Thread.sleep(speepMs) 
do processing 
+0

L'idée est parfaitement adaptée au problème que je ressens comme si, pour chaque intervalle de 1 ms, le sujet est enrichi avec certaines données et le consommateur consomme et le thread dort pour toutes les données de 1ms si cela peut aller bien et l'autre logique de traitement être appelé ryte !!!! –