【发布时间】:2019-12-30 14:54:33
【问题描述】:
我们能否通过队列发送 Java.net.Socket 对象并接收到它,在将数据发送到客户端后进行一些操作并关闭 Socket 对象。
我尝试了序列化和反序列化,但我不确定套接字是否支持序列化和反序列化。
谢谢, 赫如希
【问题讨论】:
-
这将如何运作?与打开套接字的进程不同的进程如何关闭它?
-
实际我想使用相同的 Socket 对象,通过套接字发回回复。但是代码流程不同,这就是我使用队列的原因,通过队列发送数据以及套接字。一旦我收到它,将进行一些操作并使用相同的套接字对象通过套接字将数据发送回并关闭它。对于这种情况,您有什么可能的方法吗?
-
您不能序列化套接字。您只能将套接字传递给子进程,而不是通过 Kafka。您必须将数据带回持有套接字的原始进程,以便它可以将其发送出去。
-
哦。所以我可能需要调用回调函数通过套接字将数据发回并关闭套接字,一旦另一个进程读取数据并处理它。
-
Kafka 回调在这里不会有用。我找到了解决方案(可能很奇怪),使用静态映射来存储带有一些唯一键的套接字对象。通过 Kafka 队列在另一个代码流中发送唯一键,并再次从 kafka 队列中检索对象以在同一个调用中通过套接字发送回复。
标签: java sockets serialization apache-kafka