package org.wildfly.swarm.messaging.runtime; import java.util.List; import javax.enterprise.context.ApplicationScoped; import javax.enterprise.inject.Any; import javax.inject.Inject; import javax.inject.Named; import org.wildfly.swarm.config.messaging.activemq.Server; import org.wildfly.swarm.messaging.EnhancedServer; import org.wildfly.swarm.messaging.MessagingFraction; import org.wildfly.swarm.spi.api.Customizer; import org.wildfly.swarm.spi.api.OutboundSocketBinding; import org.wildfly.swarm.spi.api.SocketBindingGroup; import org.wildfly.swarm.spi.runtime.annotations.Post; /** * Creates an outbound-socket binding for each RemoteConnection. * * @author Bob McWhirter */ @Post @ApplicationScoped public class RemoteConnectionSocketBindingCustomizer implements Customizer { @Inject @Named("standard-sockets") SocketBindingGroup group; @Inject @Any MessagingFraction fraction; @Override public void customize() { List<Server> servers = fraction.subresources().servers(); servers.stream() .filter(e -> e instanceof EnhancedServer) .forEach(server -> { ((EnhancedServer) server).remoteConnections() .forEach(connection -> { OutboundSocketBinding binding = new OutboundSocketBinding(connection.name()); binding.remoteHost(connection.host()) .remotePort(connection.port()); group.outboundSocketBinding(binding); }); }); } }