Skip to content

Commit 712918d

Browse files
committed
docs and confluent
1 parent 69e9e86 commit 712918d

File tree

3 files changed

+68
-19
lines changed

3 files changed

+68
-19
lines changed

docs/modules/kafka.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,18 @@ Create a `KafkaContainer` to use it in your tests:
5454
[Creating a KafkaContainer](../../modules/kafka/src/test/java/org/testcontainers/kafka/KafkaContainerTest.java) inside_block:constructorWithVersion
5555
<!--/codeinclude-->
5656

57+
### withNetworkAliases
58+
59+
The first alias host name defined using `withNetworkAliases` configures port 9092. Example for `kafka:9092`:
60+
61+
<!--codeinclude-->
62+
[Creating a KafkaContainer](../../modules/kafka/src/test/java/org/testcontainers/kafka/KafkaContainerTest.java) inside_block:registerAlias
63+
<!--/codeinclude-->
64+
65+
This works with `org.testcontainers.kafka.KafkaContainer` and `org.testcontainers.kafka.ConfluentKafkaContainer` but not with deprecated `org.testcontainers.containers.KafkaContainer`.
66+
67+
It only works if `withListener` is not used.
68+
5769
## Options
5870
5971
### <a name="zookeeper"></a> Using external Zookeeper

modules/kafka/src/main/java/org/testcontainers/kafka/ConfluentKafkaContainer.java

Lines changed: 28 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -48,13 +48,24 @@ protected void configure() {
4848

4949
@Override
5050
protected void containerIsStarting(InspectContainerResponse containerInfo) {
51+
List<String> networkAliases = getNetworkAliases();
52+
String plaintextAdvertisedListener;
53+
if (listeners.isEmpty() && networkAliases.size() > 1) {
54+
// 0 is the random network alias generated by GenericContainer
55+
plaintextAdvertisedListener =
56+
"PLAINTEXT://" + networkAliases.get(1) + ":" + KafkaHelper.KAFKA_PORT;
57+
} else {
58+
plaintextAdvertisedListener =
59+
"PLAINTEXT://" + getBootstrapServers();
60+
}
61+
5162
String brokerAdvertisedListener = String.format(
5263
"BROKER://%s:%s",
5364
containerInfo.getConfig().getHostName(),
5465
"9093"
5566
);
5667
List<String> advertisedListeners = new ArrayList<>();
57-
advertisedListeners.add("PLAINTEXT://" + getBootstrapServers());
68+
advertisedListeners.add(plaintextAdvertisedListener);
5869
advertisedListeners.add(brokerAdvertisedListener);
5970

6071
advertisedListeners.addAll(KafkaHelper.resolveAdvertisedListeners(this.advertisedListeners));
@@ -87,8 +98,14 @@ protected void containerIsStarting(InspectContainerResponse containerInfo) {
8798
* <p>
8899
* Default advertised listeners:
89100
* <ul>
90-
* <li>{@code container.getConfig().getHostName():9092}</li>
91-
* <li>{@code container.getHost():container.getMappedPort(9093)}</li>
101+
* <li>{@code container.getConfig().getHostName():container.getMappedPort(9092)}</li>
102+
* <li>{@code container.getHost():9093}</li>
103+
* </ul>
104+
* <p>
105+
* Default advertised listeners if {@code withListener} is not used but {@code withNetworkAliases} is used:
106+
* <ul>
107+
* <li>{@code first network alias:9092}</li>
108+
* <li>{@code container.getHost():9093}</li>
92109
* </ul>
93110
* @param listener a listener with format {@code host:port}
94111
* @return this {@link ConfluentKafkaContainer} instance
@@ -118,8 +135,14 @@ public ConfluentKafkaContainer withListener(String listener) {
118135
* <p>
119136
* Default advertised listeners:
120137
* <ul>
121-
* <li>{@code container.getConfig().getHostName():9092}</li>
122-
* <li>{@code container.getHost():container.getMappedPort(9093)}</li>
138+
* <li>{@code container.getConfig().getHostName():container.getMappedPort(9092)}</li>
139+
* <li>{@code container.getHost():9093}</li>
140+
* </ul>
141+
* <p>
142+
* Default advertised listeners if {@code withListener} is not used but {@code withNetworkAliases} is used:
143+
* <ul>
144+
* <li>{@code first network alias:9092}</li>
145+
* <li>{@code container.getHost():9093}</li>
123146
* </ul>
124147
* @param listener a supplier that will provide a listener
125148
* @param advertisedListener a supplier that will provide a listener

modules/kafka/src/main/java/org/testcontainers/kafka/KafkaContainer.java

Lines changed: 28 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -54,23 +54,25 @@ protected void configure() {
5454

5555
@Override
5656
protected void containerIsStarting(InspectContainerResponse containerInfo) {
57-
String brokerAdvertisedListener = String.format(
58-
"BROKER://%s:%s",
59-
containerInfo.getConfig().getHostName(),
60-
"9093"
61-
);
62-
6357
List<String> networkAliases = getNetworkAliases();
64-
String plaintextServer;
58+
String plaintextAdvertisedListener;
6559
if (listeners.isEmpty() && networkAliases.size() > 1) {
6660
// 0 is the random network alias generated by GenericContainer
67-
plaintextServer = networkAliases.get(1) + ":" + KAFKA_PORT;
61+
plaintextAdvertisedListener =
62+
"PLAINTEXT://" + networkAliases.get(1) + ":" + KafkaHelper.KAFKA_PORT;
6863
} else {
69-
plaintextServer = getBootstrapServers();
64+
plaintextAdvertisedListener =
65+
"PLAINTEXT://" + getBootstrapServers();
7066
}
7167

68+
String brokerAdvertisedListener = String.format(
69+
"BROKER://%s:%s",
70+
containerInfo.getConfig().getHostName(),
71+
"9093"
72+
);
73+
7274
List<String> advertisedListeners = new ArrayList<>();
73-
advertisedListeners.add("PLAINTEXT://" + plaintextServer);
75+
advertisedListeners.add(plaintextAdvertisedListener);
7476
advertisedListeners.add(brokerAdvertisedListener);
7577

7678
advertisedListeners.addAll(KafkaHelper.resolveAdvertisedListeners(this.advertisedListeners));
@@ -102,8 +104,14 @@ protected void containerIsStarting(InspectContainerResponse containerInfo) {
102104
* <p>
103105
* Default advertised listeners:
104106
* <ul>
105-
* <li>{@code container.getConfig().getHostName():9092}</li>
106-
* <li>{@code container.getHost():container.getMappedPort(9093)}</li>
107+
* <li>{@code container.getConfig().getHostName():container.getMappedPort(9092)}</li>
108+
* <li>{@code container.getHost():9093}</li>
109+
* </ul>
110+
* <p>
111+
* Default advertised listeners if {@code withListener} is not used but {@code withNetworkAliases} is used:
112+
* <ul>
113+
* <li>{@code first network alias:9092}</li>
114+
* <li>{@code container.getHost():9093}</li>
107115
* </ul>
108116
* @param listener a listener with format {@code host:port}
109117
* @return this {@link KafkaContainer} instance
@@ -133,8 +141,14 @@ public KafkaContainer withListener(String listener) {
133141
* <p>
134142
* Default advertised listeners:
135143
* <ul>
136-
* <li>{@code container.getConfig().getHostName():9092}</li>
137-
* <li>{@code container.getHost():container.getMappedPort(9093)}</li>
144+
* <li>{@code container.getConfig().getHostName():container.getMappedPort(9092)}</li>
145+
* <li>{@code container.getHost():9093}</li>
146+
* </ul>
147+
* <p>
148+
* Default advertised listeners if {@code withListener} is not used but {@code withNetworkAliases} is used:
149+
* <ul>
150+
* <li>{@code first network alias:9092}</li>
151+
* <li>{@code container.getHost():9093}</li>
138152
* </ul>
139153
* @param listener a supplier that will provide a listener
140154
* @param advertisedListener a supplier that will provide a listener

0 commit comments

Comments
 (0)