How do I tell Aeron which port range to use?¶
Info
This feature was introduced with Aeron 1.42.0. The port manager will only supply ports to items which have a :0
in the channel configuration. Channels with specific ports selected are not impacted.
Problem¶
You want the Media Driver to select ports from a given range, to simplify firewall or other configuration.
Solution¶
Make use of the port manager configuration now found in the Media Driver Context. There is a built-in implementation of the io.aeron.driver.media.PortManager
interface called io.aeron.driver.media.WildcardPortManager
which allows port range selection.
Discussion¶
First, define the desired port range. For this example, the desired port range will run from port 1000-2000. Port ranges are defined within an int[2]
, with the first entry being the starting low port and the second entry being the ending high port:
public static int[] SAMPLE_PORT_RANGE = new int[2];
SAMPLE_PORT_RANGE[0]=1000;
SAMPLE_PORT_RANGE[1]=2000;
Then within the Media Driver Context:
final MediaDriver.Context context = new MediaDriver.Context()
...
.senderPortManager(new WildcardPortManager(SAMPLE_PORT_RANGE, true))
.receiverPortManager(new WildcardPortManager(SAMPLE_PORT_RANGE, false));
The second parameter to the WildcardPortManager
informs the WildcardPortManager
if it is being used as a provider of sender ports, or not.