by default, remote senders send keyless events in round-robin fashion
(rather than broadcast)
diff --git a/subprojects/s4-core/src/main/java/org/apache/s4/core/RemoteSender.java b/subprojects/s4-core/src/main/java/org/apache/s4/core/RemoteSender.java
index cdb0b01..cbe037e 100644
--- a/subprojects/s4-core/src/main/java/org/apache/s4/core/RemoteSender.java
+++ b/subprojects/s4-core/src/main/java/org/apache/s4/core/RemoteSender.java
@@ -8,6 +8,7 @@
final private Emitter emitter;
final private Hasher hasher;
+ int targetPartition = 0;
public RemoteSender(Emitter emitter, Hasher hasher) {
super();
@@ -17,9 +18,8 @@
public void send(String hashKey, EventMessage eventMessage) {
if (hashKey == null) {
- for (int i = 0; i < emitter.getPartitionCount(); i++) {
- emitter.send(i, eventMessage);
- }
+ // round robin by default
+ emitter.send(Math.abs(targetPartition++ % emitter.getPartitionCount()), eventMessage);
} else {
int partition = (int) (hasher.hash(hashKey) % emitter.getPartitionCount());
emitter.send(partition, eventMessage);