try { deadLetterProducer = client.newProducer(schema) .topic(this.deadLetterPolicy.getDeadLetterTopic()) .blockIfQueueFull(false) .create();
protected void testPulsarFunctionality(String pulsarBrokerUrl) throws Exception { try ( PulsarClient client = PulsarClient.builder() .serviceUrl(pulsarBrokerUrl) .build(); Consumer consumer = client.newConsumer() .topic(TEST_TOPIC) .subscriptionName("test-subs") .subscribe(); Producer<byte[]> producer = client.newProducer() .topic(TEST_TOPIC) .create() ) { producer.send("test containers".getBytes()); CompletableFuture<Message> future = consumer.receiveAsync(); Message message = future.get(5, TimeUnit.SECONDS); assertThat(new String(message.getData())) .isEqualTo("test containers"); } }
@Override public CompletableFuture<BenchmarkProducer> createProducer(String topic) { return producerBuilder.topic(topic).createAsync() .thenApply(pulsarProducer -> new PulsarBenchmarkProducer(pulsarProducer)); }
@SuppressWarnings("unchecked") public <O> CompletableFuture<Void> publish(String topicName, O object, Schema<O> schema) { Producer<O> producer = (Producer<O>) publishProducers.get(topicName); if (producer == null) { try { Producer<O> newProducer = ((ProducerBuilderImpl<O>) producerBuilder.clone()) .schema(schema).topic(topicName).create(); Producer<O> existingProducer = (Producer<O>) publishProducers.putIfAbsent(topicName, newProducer); if (existingProducer != null) { // The value in the map was not updated after the concurrent put newProducer.close(); producer = existingProducer; } else { producer = newProducer; } } catch (PulsarClientException e) { logger.error("Failed to create Producer while doing user publish", e); return FutureUtil.failedFuture(e); } } return producer.sendAsync(object).thenApply(msgId -> null); }
public ProducerHandler(WebSocketService service, HttpServletRequest request, ServletUpgradeResponse response) { super(service, request, response); this.numMsgsSent = new LongAdder(); this.numBytesSent = new LongAdder(); this.numMsgsFailed = new LongAdder(); this.publishLatencyStatsUSec = new StatsBuckets(ENTRY_LATENCY_BUCKETS_USEC); if (!checkAuth(response)) { return; } try { this.producer = getProducerBuilder(service.getPulsarClient()).topic(topic.toString()).create(); if (!this.service.addProducer(this)) { log.warn("[{}:{}] Failed to add producer handler for topic {}", request.getRemoteAddr(), request.getRemotePort(), topic); } } catch (Exception e) { log.warn("[{}:{}] Failed in creating producer on topic {}: {}", request.getRemoteAddr(), request.getRemotePort(), topic, e.getMessage()); try { response.sendError(getErrorCode(e), getErrorMessage(e)); } catch (IOException e1) { log.warn("[{}:{}] Failed to send error: {}", request.getRemoteAddr(), request.getRemotePort(), e1.getMessage(), e1); } } }
@Override public void start() { try { client = PulsarClient.builder() .serviceUrl(serviceUrl) .build(); log.info("Successfully created pulsar client to {}", serviceUrl); producer = client.newProducer(Schema.BYTES) .topic(topic) .create(); log.info("Successfully created producer to produce updates to topic {}", topic); reader = client.newReader(Schema.BYTES) .topic(topic) .startMessageId(MessageId.earliest) .create(); log.info("Successfully created reader to replay updates from topic {}", topic); CompletableFuture<Void> endFuture = new CompletableFuture<>(); readToEnd(endFuture); endFuture.join(); } catch (PulsarClientException e) { log.error("Failed to create pulsar client to cluster at {}", serviceUrl, e); throw new RuntimeException("Failed to create pulsar client to cluster at " + serviceUrl, e); } }
@Override public void start() { this.state = State.STARTING; try { ProducerBuilder<byte[]> producerBuilder = pulsarClient.newProducer() .topic(logTopic) .producerName(fqn) .blockIfQueueFull(false) .enableBatching(true) .batchingMaxPublishDelay(10, TimeUnit.MILLISECONDS); producer = producerBuilder.create(); } catch (Exception e) { throw new RuntimeException("Error starting LogTopic Producer", e); } this.state = State.STARTED; }
Producer<byte[]> producer = client.newProducer().topic(topic).create();
futures.add(producerBuilder.clone().topic(topic).createAsync());
public AbstractReplicator(String topicName, String replicatorPrefix, String localCluster, String remoteCluster, BrokerService brokerService) throws NamingException { validatePartitionedTopic(topicName, brokerService); this.brokerService = brokerService; this.topicName = topicName; this.replicatorPrefix = replicatorPrefix; this.localCluster = localCluster.intern(); this.remoteCluster = remoteCluster.intern(); this.client = (PulsarClientImpl) brokerService.getReplicationClient(remoteCluster); this.producer = null; this.producerQueueSize = brokerService.pulsar().getConfiguration().getReplicationProducerQueueSize(); this.producerBuilder = client.newProducer() // .topic(topicName) .messageRoutingMode(MessageRoutingMode.SinglePartition) .enableBatching(false) .sendTimeout(0, TimeUnit.SECONDS) // .maxPendingMessages(producerQueueSize) // .producerName(getReplicatorName(replicatorPrefix, localCluster)); STATE_UPDATER.set(this, State.Stopped); }
try { deadLetterProducer = client.newProducer(schema) .topic(this.deadLetterPolicy.getDeadLetterTopic()) .blockIfQueueFull(false) .create();