Java Code Examples for org.apache.pulsar.common.naming.TopicName#isPartitioned()
The following examples show how to use
org.apache.pulsar.common.naming.TopicName#isPartitioned() .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: PersistentTopicsBase.java From pulsar with Apache License 2.0 | 6 votes |
private RestException topicNotFoundReason(TopicName topicName) { if (!topicName.isPartitioned()) { return new RestException(Status.NOT_FOUND, "Topic not found"); } PartitionedTopicMetadata partitionedTopicMetadata = getPartitionedTopicMetadata( TopicName.get(topicName.getPartitionedTopicName()), false, false); if (partitionedTopicMetadata == null || partitionedTopicMetadata.partitions == 0) { final String topicErrorType = partitionedTopicMetadata == null ? "has no metadata" : "has zero partitions"; return new RestException(Status.NOT_FOUND, String.format( "Partitioned Topic not found: %s %s", topicName.toString(), topicErrorType)); } else if (!internalGetList().contains(topicName.toString())) { return new RestException(Status.NOT_FOUND, "Topic partitions were not yet created"); } return new RestException(Status.NOT_FOUND, "Partitioned Topic not found"); }
Example 2
Source File: SchemasResource.java From pulsar with Apache License 2.0 | 5 votes |
private String buildSchemaId(String tenant, String namespace, String topic) { TopicName topicName = TopicName.get("persistent", tenant, namespace, topic); if (topicName.isPartitioned()) { return TopicName.get(topicName.getPartitionedTopicName()).getSchemaName(); } else { return topicName.getSchemaName(); } }
Example 3
Source File: PulsarKafkaConsumer.java From pulsar with Apache License 2.0 | 4 votes |
@SuppressWarnings("unchecked") @Override public ConsumerRecords<K, V> poll(long timeoutMillis) { try { QueueItem item = receivedMessages.poll(timeoutMillis, TimeUnit.MILLISECONDS); if (item == null) { return (ConsumerRecords<K, V>) ConsumerRecords.EMPTY; } Map<TopicPartition, List<ConsumerRecord<K, V>>> records = new HashMap<>(); int numberOfRecords = 0; while (item != null) { TopicName topicName = TopicName.get(item.consumer.getTopic()); String topic = topicName.getPartitionedTopicName(); int partition = topicName.isPartitioned() ? topicName.getPartitionIndex() : 0; Message<byte[]> msg = item.message; MessageIdImpl msgId = (MessageIdImpl) msg.getMessageId(); long offset = MessageIdUtils.getOffset(msgId); TopicPartition tp = new TopicPartition(topic, partition); if (lastReceivedOffset.get(tp) == null && !unpolledPartitions.contains(tp)) { log.info("When polling offsets, invalid offsets were detected. Resetting topic partition {}", tp); resetOffsets(tp); } K key = getKey(topic, msg); if (valueSchema instanceof PulsarKafkaSchema) { ((PulsarKafkaSchema<V>) valueSchema).setTopic(topic); } V value = valueSchema.decode(msg.getData()); TimestampType timestampType = TimestampType.LOG_APPEND_TIME; long timestamp = msg.getPublishTime(); if (msg.getEventTime() > 0) { // If we have Event time, use that in preference timestamp = msg.getEventTime(); timestampType = TimestampType.CREATE_TIME; } ConsumerRecord<K, V> consumerRecord = new ConsumerRecord<>(topic, partition, offset, timestamp, timestampType, -1, msg.hasKey() ? msg.getKey().length() : 0, msg.getData().length, key, value); records.computeIfAbsent(tp, k -> new ArrayList<>()).add(consumerRecord); // Update last offset seen by application lastReceivedOffset.put(tp, offset); unpolledPartitions.remove(tp); if (++numberOfRecords >= maxRecordsInSinglePoll) { break; } // Check if we have an item already available item = receivedMessages.poll(0, TimeUnit.MILLISECONDS); } if (isAutoCommit && !records.isEmpty()) { // Commit the offset of previously dequeued messages commitAsync(); } // If no interceptor is provided, interceptors list will an empty list, original ConsumerRecords will be return. return applyConsumerInterceptorsOnConsume(interceptors, new ConsumerRecords<>(records)); } catch (InterruptedException e) { throw new RuntimeException(e); } }
Example 4
Source File: PulsarKafkaConsumer.java From pulsar with Apache License 2.0 | 4 votes |
@Override public ConsumerRecords<K, V> poll(long timeoutMillis) { try { QueueItem item = receivedMessages.poll(timeoutMillis, TimeUnit.MILLISECONDS); if (item == null) { return (ConsumerRecords<K, V>) ConsumerRecords.EMPTY; } Map<TopicPartition, List<ConsumerRecord<K, V>>> records = new HashMap<>(); int numberOfRecords = 0; while (item != null) { TopicName topicName = TopicName.get(item.consumer.getTopic()); String topic = topicName.getPartitionedTopicName(); int partition = topicName.isPartitioned() ? topicName.getPartitionIndex() : 0; Message<byte[]> msg = item.message; MessageIdImpl msgId = (MessageIdImpl) msg.getMessageId(); long offset = MessageIdUtils.getOffset(msgId); TopicPartition tp = new TopicPartition(topic, partition); if (lastReceivedOffset.get(tp) == null && !unpolledPartitions.contains(tp)) { log.info("When polling offsets, invalid offsets were detected. Resetting topic partition {}", tp); resetOffsets(tp); } K key = getKey(topic, msg); if (valueSchema instanceof PulsarKafkaSchema) { ((PulsarKafkaSchema<V>) valueSchema).setTopic(topic); } V value = valueSchema.decode(msg.getData()); ConsumerRecord<K, V> consumerRecord = new ConsumerRecord<>(topic, partition, offset, key, value); records.computeIfAbsent(tp, k -> new ArrayList<>()).add(consumerRecord); // Update last offset seen by application lastReceivedOffset.put(tp, offset); unpolledPartitions.remove(tp); if (++numberOfRecords >= maxRecordsInSinglePoll) { break; } // Check if we have an item already available item = receivedMessages.poll(0, TimeUnit.MILLISECONDS); } if (isAutoCommit && !records.isEmpty()) { // Commit the offset of previously dequeued messages commitAsync(); } return new ConsumerRecords<>(records); } catch (InterruptedException e) { throw new RuntimeException(e); } }