幂等性是无法保证分区之间是生效的,但是有了事务可以解决跨分区写入消息,通过原子性。生产者给0分区发送消息失败了,失败了1分区就不需要发了。

下面是站在生产者的角度去做一个事务,可以将多条消息的生产放到一个事务当中,要么同时成功,要么同时失败。
幂等性+id同时打开才行。

将100条消息的发送放到一个事务当中。消息发送是键值对,第一个参数是topic名称,第二个参数是key,第三个参数是value。
在执行的过程当中如果没有异常就可以提交事务了,如果有异常就用try catch来做,这样会导致整个事务的失败,所以需要做一个灰姑娘的操作。
可以将100次的操作放到一个事务里面,如果在执行过程中出现了异常,这个时候直接去回滚到事务的起点来完成全部的撤销。这样就可以保证到原子性。
这就是生产者端的事务配置。