maihaoche / rocketmq-spring-boot-starter

Spring Boot starter for RocketMQ
Apache License 2.0
287 stars 147 forks source link

fix:MessageBuilder.key()无效的问题 #22

Open a252937166 opened 5 years ago

a252937166 commented 5 years ago

#16 1.使用MessageBuilder.of(msg).tag("").key("key").topic(topic).build(),是发现.key("key")无论怎么设置都无效。修复后改为了,如果有.key(),把它作为消息的key,如果实体中还有@MQKey@MQKey的内容拼接在其后面。 2.实体类中有多个@MQKey("key")时,只有最后一个字段的@MQKey("key")有效,感觉不是很好,改成了如果有多个@MQKey("key"),就把所有key的内容拼接到一起,成为消息的key。 3.为了不和之前版本混淆,版本改为了0.1.1 望及时采纳,发布到中央仓库。

coveralls commented 5 years ago

Coverage Status

Coverage increased (+0.1%) to 23.699% when pulling a6907181c1425e255e1a5cf57c0d5baf8235a156 on a252937166:master into 564c26be615e53a805f8ce23e62f939e4c8e22e0 on maihaoche:master.

suclogger commented 4 years ago

我认为隐式的Key拼接方案并不合理,key是具体业务语义的体现,进行拼接后丢失了这一语义,应当让使用方显著感知到这个行为。能否重新考虑fix方式?

a252937166 commented 4 years ago

1.我目前修改为,@MQKey现在注解到类上,指定一个field的name,如果field指定错误则自动忽略。如果使用builder显示指定key时,以builder设定为准。 2.我使用过程中发现,大多是情况下,目前修改版本只需要一个producer发送消息。这种场景,显示地使用@MQProducer构建出一个producer其实没有必要。可以参考rabbitmq这样,自动注入一个RocketMQTemplate给使用者。当然@MQProducer目前还是保留的。