It was said that consumers can only read the whole topic. No luck doing evaluations on brokers to filter messages.
It implies that we have to consume/receive all messages from a topic and filter them on the client side.
That's too much. I was wondering if we can filter and receive specific types of messages, based on somethings already passed to brokers, such as the msg keys or other things.
from the method, Consumer.poll(timeout), it seems no extra things we can do.
No, with the Consumer you cannot only receive some messages from topics. The consumer fetches all messages in order.
If you don't want to filter messages in the Consumer, you could use a Streams job. For example, Streams would read from your topic and only push to another topic the messages the consumer is interested in. Then the consumer can subscribe to this new topic.