You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							68 lines
						
					
					
						
							3.1 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							68 lines
						
					
					
						
							3.1 KiB
						
					
					
				| import org.apache.kafka.clients.producer.KafkaProducer; | |
| import org.apache.kafka.clients.producer.ProducerConfig; | |
| import org.apache.kafka.clients.producer.ProducerRecord; | |
| import org.apache.kafka.clients.producer.RecordMetadata; | |
| import org.apache.kafka.common.serialization.StringSerializer; | |
| 
 | |
| import java.util.Properties; | |
| import java.util.concurrent.Future; | |
| 
 | |
| public class JavaProducerTest { | |
|     public static void main(String[] args) { | |
|         String bootstrapServers = args.length > 0 ? args[0] : "localhost:9093"; | |
|         String topicName = args.length > 1 ? args[1] : "test-topic"; | |
| 
 | |
|         System.out.println("Testing Kafka Producer with broker: " + bootstrapServers); | |
|         System.out.println("    Topic: " + topicName); | |
| 
 | |
|         Properties props = new Properties(); | |
|         props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, bootstrapServers); | |
|         props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName()); | |
|         props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName()); | |
|         props.put(ProducerConfig.CLIENT_ID_CONFIG, "java-producer-test"); | |
|         props.put(ProducerConfig.ACKS_CONFIG, "1"); | |
|         props.put(ProducerConfig.RETRIES_CONFIG, 0); | |
|         props.put(ProducerConfig.MAX_BLOCK_MS_CONFIG, 10000); | |
| 
 | |
|         System.out.println("Creating Producer with config:"); | |
|         props.forEach((k, v) -> System.out.println("  " + k + " = " + v)); | |
| 
 | |
|         try (KafkaProducer<String, String> producer = new KafkaProducer<>(props)) { | |
|             System.out.println("Producer created successfully"); | |
| 
 | |
|             // Try to send a test message | |
|             System.out.println("\n=== Test: Send Message ==="); | |
|             try { | |
|                 ProducerRecord<String, String> record = new ProducerRecord<>(topicName, "key1", "value1"); | |
|                 System.out.println("Sending record to topic: " + topicName); | |
|                 Future<RecordMetadata> future = producer.send(record); | |
| 
 | |
|                 RecordMetadata metadata = future.get(); // This will block and wait for response | |
|                 System.out.println("Message sent successfully!"); | |
|                 System.out.println("  Topic: " + metadata.topic()); | |
|                 System.out.println("  Partition: " + metadata.partition()); | |
|                 System.out.println("  Offset: " + metadata.offset()); | |
|             } catch (Exception e) { | |
|                 System.err.println("Send failed: " + e.getMessage()); | |
|                 e.printStackTrace(); | |
| 
 | |
|                 // Print cause chain | |
|                 Throwable cause = e.getCause(); | |
|                 int depth = 1; | |
|                 while (cause != null && depth < 5) { | |
|                     System.err.println( | |
|                             "  Cause " + depth + ": " + cause.getClass().getName() + ": " + cause.getMessage()); | |
|                     cause = cause.getCause(); | |
|                     depth++; | |
|                 } | |
|             } | |
| 
 | |
|             System.out.println("\nTest completed!"); | |
| 
 | |
|         } catch (Exception e) { | |
|             System.err.println("Producer creation or operation failed: " + e.getMessage()); | |
|             e.printStackTrace(); | |
|             System.exit(1); | |
|         } | |
|     } | |
| }
 |