我正在使用 @Entity
@Table(name = "CLIENTS")
public class CLIENTS implements Serializable {
private static final long serialVersionUID = 123;
@Id
@Column(name = "ID")
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer clientId;
@Column(name = "CODE")
private Integer code;
@Column(name = "REC_ID")
private Integer recId;
//setters, getters, etc
}
ConsumerGroup来读取来自Kafka的消息。我想从主题中读取新消息,即不是所有以前未消耗的消息,而是仅读取在创建ConsumerGroup之后到达的消息。
选项kafka-node
仅在给定groupId没有存储偏移时才会到位。我可以通过在每次创建ConsumerGroup时创建一个新的groupId来使用它,但是我想避免这种方法,因为这会在kafka服务器上创建大量的groupId和存储的偏移量。
我还尝试手动将偏移设置为fromOffset: 'latest'
,如下所示:
-1
这将返回一个0的errorCode应该是成功的,但ConsumerGroup之后会收到旧消息。
卡夫卡版:0.10.0 kafka-node:1.6.2
答案 0 :(得分:0)
commit(groupId, payloads, cb)
offset.commit的第一个参数应该是groupId,而不是clientId。
您应该将消费者的群组名称传递给它。
答案 1 :(得分:0)
使用选项启动kafka ConsumerGroup:
autoCommit: false,
fromOffset: 'latest'
创建一个永远不会向Kafka提交偏移量的ConsumerGroup(除非你手动执行,这是不需要的)。因此,它总会选择最新的'启动时的选项。
答案 2 :(得分:0)
对于所有注意到即使将'autoCommit'设置为'false'的人也只进行了很小的更新,上述解决方案仍然无效,并且偏移量仍存储在组中:请确保设置其他标志: commitOffsetsOnFirstJoin:否 在选项对象中。如果未设置标志,则将按组存储偏移量,并且一旦第二次启动,它将获得所有从该偏移量开始的消息
我希望这将有助于节省很多时间;)