先对三者的概念做个个人理解的介绍:
topic是消息通道的重要标识,可以理解成消息的标题,生产者和消费者必须在用一个topic下才能通讯
tag可以理解为topic的二级标签,同一个topic可以发送不用的tag消息,消费者可以指定接收某个tag的消息,也可以使用通配符如“*”,null来接收所有tag的消息,是对消息的进一步分类
groupname是组的感念,理解起来比较抽象,groupname可以配置也可以不配置,不配置默认都在一个组。但是不影响消息的正常发送和接收,但是会影响到消息的消费者会被谁消费
举个例子,如果有一个生产者,两个消费者A和B,如果生产者配置的组名为group1,消费者A和B的组名也配置的组名为group1,那么消费者A和B只能有一个消费到消息,
但是如果消费者A和消费者B 配置了不通的组名,则两个消费者都能收到生产者发送的消息。
其实groupname是为了项目的负载均衡用的,比如你的消费者程序部署多处,为了防止消息重复处理,只需要配置相同的groupname就可以了