@Override protected Collection<Void> handleMessage(M message, MessageCollector collector, TaskCoordinator coordinator) { collector.send(new OutgoingMessageEnvelope(systemStream, 0, null, message)); return Collections.emptyList(); }
private void sendControlMessage(ControlMessage message, MessageCollector collector) { OutgoingMessageEnvelope envelopeOut = new OutgoingMessageEnvelope(systemStream, 0, null, message); collector.send(envelopeOut); } }
@Override public Collection<Void> handleMessage(M message, MessageCollector collector, TaskCoordinator coordinator) { K key = keyFunction.apply(message); V value = valueFunction.apply(message); Long partitionKey = key == null ? 0L : null; collector.send(new OutgoingMessageEnvelope(systemStream, partitionKey, key, value)); return Collections.emptyList(); }
@Override public Collection<Void> handleMessage(M message, MessageCollector collector, TaskCoordinator coordinator) { K key = keyFunction.apply(message); V value = valueFunction.apply(message); Long partitionKey = key == null ? 0L : null; collector.send(new OutgoingMessageEnvelope(systemStream, partitionKey, key, value)); return Collections.emptyList(); }
@Override public Collection<Void> handleMessage(M message, MessageCollector collector, TaskCoordinator coordinator) { K key = keyFunction.apply(message); V value = valueFunction.apply(message); Long partitionKey = key == null ? 0L : null; collector.send(new OutgoingMessageEnvelope(systemStream, partitionKey, key, value)); return Collections.emptyList(); }
void send(ControlMessage message, SystemStream systemStream, MessageCollector collector) { int partitionCount = getPartitionCount(systemStream); // We pick a partition based on topic hashcode to aggregate the control messages from upstream tasks // After aggregation the task will broadcast the results to other partitions int aggregatePartition = systemStream.getStream().hashCode() % partitionCount; LOG.debug(String.format("Send %s message from task %s to %s partition %s for aggregation", MessageType.of(message).name(), message.getTaskName(), systemStream, aggregatePartition)); OutgoingMessageEnvelope envelopeOut = new OutgoingMessageEnvelope(systemStream, aggregatePartition, null, message); collector.send(envelopeOut); }
@Override public void put(String key, byte[] value) { OutgoingMessageEnvelope envelope = new OutgoingMessageEnvelope(coordinatorSystemStream, 0, keySerde.toBytes(key), value); systemProducer.send(SOURCE, envelope); flush(); }
private void produceMessages(Object... events) { SystemProducer systemProducer = systemFactory.getProducer(SYSTEM_NAME, config, mockRegistry); Stream.of(events) .forEach(event -> systemProducer.send(SOURCE, new OutgoingMessageEnvelope(SYSTEM_STREAM, event))); }
private OutgoingMessageEnvelope createMessageEnvelope(String streamName) { return new OutgoingMessageEnvelope(new SystemStream(SYSTEM_NAME, streamName), "key1".getBytes(), "value".getBytes()); }
@Test(expected=SamzaException.class) public void testGetIndexRequestInvalidStreamName() { when(SYSTEM.getStream()).thenReturn(INDEX); indexRequestFactory.getIndexRequest(new OutgoingMessageEnvelope(SYSTEM, EMPTY_MSG)); }
@Test(expected=SamzaException.class) public void testGetIndexRequestInvalidMessage() throws Exception { indexRequestFactory.getIndexRequest(new OutgoingMessageEnvelope(SYSTEM, "{'foo':'bar'}")); } }
void broadcastToOtherPartitions(ControlMessage message, SystemStreamPartition ssp, MessageCollector collector) { SystemStream systemStream = ssp.getSystemStream(); int partitionCount = getPartitionCount(systemStream); int currentPartition = ssp.getPartition().getPartitionId(); for (int i = 0; i < partitionCount; i++) { if (i != currentPartition) { OutgoingMessageEnvelope envelopeOut = new OutgoingMessageEnvelope(systemStream, i, null, message); collector.send(envelopeOut); } } }
@Test public void testGetIndexRequestMessageBytes() throws Exception { IndexRequest indexRequest = indexRequestFactory.getIndexRequest( new OutgoingMessageEnvelope(SYSTEM, "{\"foo\":\"bar\"}".getBytes(Charsets.UTF_8))); assertEquals(Collections.singletonMap("foo", "bar"), indexRequest.sourceAsMap()); }
@Test public void testGetIndexRequestMessageMap() throws Exception { IndexRequest indexRequest = indexRequestFactory.getIndexRequest( new OutgoingMessageEnvelope(SYSTEM, Collections.singletonMap("foo", "bar"))); assertEquals(Collections.singletonMap("foo", "bar"), indexRequest.sourceAsMap()); }
@Test(expected = NullPointerException.class) public void testNullMessageWithNullKey() { SystemProducer systemProducer = systemFactory.getProducer(SYSTEM_NAME, config, mockRegistry); systemProducer.send(SOURCE, new OutgoingMessageEnvelope(SYSTEM_STREAM, null)); }
@Test public void testGetIndexRequestNoPartitionKey() throws Exception { IndexRequest indexRequest = indexRequestFactory.getIndexRequest( new OutgoingMessageEnvelope(SYSTEM, EMPTY_MSG)); assertNull(indexRequest.routing()); }
@Test public void testGetIndexRequestWithId() throws Exception { IndexRequest indexRequest = indexRequestFactory.getIndexRequest(new OutgoingMessageEnvelope(SYSTEM, "id", EMPTY_MSG)); assertEquals("id", indexRequest.id()); }
@Test public void testGetIndexRequestNoId() throws Exception { IndexRequest indexRequest = indexRequestFactory.getIndexRequest(new OutgoingMessageEnvelope(SYSTEM, EMPTY_MSG)); assertNull(indexRequest.id()); }
@Test public void testGetIndexRequestWithPartitionKey() throws Exception { IndexRequest indexRequest = indexRequestFactory.getIndexRequest( new OutgoingMessageEnvelope(SYSTEM, "shardKey", "id", EMPTY_MSG)); assertEquals("shardKey", indexRequest.routing()); }
@Test public void testGetIndexRequestStreamName() { IndexRequest indexRequest = indexRequestFactory. getIndexRequest(new OutgoingMessageEnvelope(SYSTEM, EMPTY_MSG)); assertEquals(INDEX, indexRequest.index()); assertEquals(TYPE, indexRequest.type()); }