Ensure that messages from the same party are assigned to the same topic partition.

This was already the intention; however we pass the key in as a byte array, and Kafka uses Object.hashCode() to determine the partition. This goes wrong, because byte arrays don't have a semantic hashcode: the identity is used.
The fix is to pass in the string explicitly as the partition key.