我们可以序列化java套接字对象以通过Kafka队列发送吗

我们可以序列化java套接字对象以通过Kafka队列发送吗,java,sockets,serialization,apache-kafka,Java,Sockets,Serialization,Apache Kafka,我们可以通过队列发送Java.net.Socket对象并接收它吗?在将数据发送到客户端后,我们可以进行一些操作并关闭Socket对象 我尝试了序列化和反序列化,但我不确定套接字是否支持序列化和反序列化 谢谢, Hrushi由于Java.net.Socket类没有实现可序列化,生产者无法将其写入Kafka供消费者使用。它不可序列化的原因与您可能无论如何都不想这样做的原因相同:一旦构建了套接字,您就真的无法将对象本身传递到JVM之外,并且仍然能够调用套接字 话虽如此,您可以编写用于构造套接字的参数(

我们可以通过队列发送Java.net.Socket对象并接收它吗?在将数据发送到客户端后,我们可以进行一些操作并关闭Socket对象

我尝试了序列化和反序列化,但我不确定套接字是否支持序列化和反序列化

谢谢,
Hrushi

由于Java.net.Socket类没有实现可序列化,生产者无法将其写入Kafka供消费者使用。它不可序列化的原因与您可能无论如何都不想这样做的原因相同:一旦构建了套接字,您就真的无法将对象本身传递到JVM之外,并且仍然能够调用套接字


话虽如此,您可以编写用于构造套接字的参数(例如,编写包含主机和端口的Kafka消息),然后让使用者使用该信息构造自己的套接字,然后与套接字交互。

这将如何工作?与打开套接字的进程不同的进程如何关闭它?实际上,我想使用相同的套接字对象,通过套接字发送回复。但代码流是不同的,这就是我使用队列发送数据以及通过队列发送套接字的原因。一旦我收到它,我会做一些操作,使用相同的套接字对象通过套接字发送数据并关闭它。对于这种情况,您是否有任何可能的方法。您无法序列化套接字。只能将套接字传递给子进程,不能通过Kafka传递。您必须将数据带回保存套接字的原始进程,以便它可以将其发送出去。ohhk。所以我可能需要调用回调函数通过套接字发送数据并关闭套接字,一旦另一个进程读取数据并处理它,Kafka回调在这里就没有用处了。我找到了一个解决方案(可能有点奇怪),使用静态映射来存储具有某个唯一键的套接字对象。通过Kafka队列在另一个代码流中发送唯一密钥,然后再次从Kafka队列中检索对象,以便在同一调用中通过套接字发送应答。