有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在Kamfka中发送消息时选择源ip地址

我在ApacheKaraf中使用camel KAFKA,并向KAFKA服务器生成消息。我在系统中配置了多个接口,只有始终使用第一个接口才能发送(生成)消息。与我在camel ftp中尝试的方法相同,我可以使用名称“ManagementServer1\u traffic\u interface”选择网络接口,并通过2.23之后引入的bindAddressapi进行绑定。有没有办法配置camel kafka组件以选择网络接口?目前我的机器有2个网络接口

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
192.198.10.1 testserver1 managementserver1_local_interface
192.199.11.2 testserver1 managementserver1_traffic_interface

查看了kafka的源代码,发现它正在内部创建一个用于传输的socket,该socket将提供绑定源地址的选项

private void configureSocketChannel(SocketChannel socketChannel, int sendBufferSize, int receiveBufferSize)
            throws IOException {
        socketChannel.configureBlocking(false);
        Socket socket = socketChannel.socket();
        socket.setKeepAlive(true);
        if (sendBufferSize != Selectable.USE_DEFAULT_BUFFER_SIZE)
            socket.setSendBufferSize(sendBufferSize);
        if (receiveBufferSize != Selectable.USE_DEFAULT_BUFFER_SIZE)
            socket.setReceiveBufferSize(receiveBufferSize);
        socket.setTcpNoDelay(true);
    }

注意:在camel ftp中,有一个选项可以通过属性bindAddress选择网络接口,该属性允许我们绑定源地址(在多个接口的情况下)。我们正在使用camel 2.23。因为我们计划只通过流量接口处理流量,而oam活动只通过管理服务器本地接口处理


共 (0) 个答案