When we can't use UDP at all it would be nice to use IP/port-list for sending message to several receivers - TCP multicast.
It can be something like <ip:multicast-tcp-outbound-channel-adapter/> which gets List<Connection> from clientConnectionFactory. I don't see any reason to have here gateway... Also there must be some flag async = true/false, when we decide to send message to the connections one by one, or use async task executor.
When we implement RetryInterceptor it may be good to use here AggregateMessageDeliveryException, which contais list with MessageDeliveryException each of which has undeliveredMessage. This ability may be used inside RetryPolicy where we make decision about failed hosts.