TCP 套接字的连接池和多线程?
Connection pooling and Multithreading for TCP Socket?
我有一个 java 应用程序(比如 A),它通过 TCP 套接字与应用程序(比如 B)通信。我的 java 应用程序是多线程的,最多可以处理 100 个线程。为了在 A --> B 之间通信,我们有 10 个套接字。
Challenges -
Connection Pooling - need connection pooling mechanism to handle n(say 100) number of thread(of application A), communicating to
application B via x(say 10) number of TCP Socket.
Multithreading - How can two thread access same socket send the request one by one and get back the response mapped to appropriate
thread.
Multiple request - Is it possible that two thread can send the request on single socket simultaneously.
我们可以通过任何框架来克服这个挑战吗?可能吗?
我听说 Spring Integration/ApacheCamel/Local MQ 可以解决这个问题。任何例子。
与Spring集成:
CachingClientConnectionFactory
TcpOutboundGateway
(含 CachingClientConnectionFactory
)。
- Collaborating Outbound and Inbound Channel Adapters.
但是你必须自己request/reply协作(通常基于消息中的内容);回复可能不会按发送顺序返回。由于没有执行该协作的标准方法,因此框架本身不支持它。
我能够通过 jPOS 解决上述问题。
jPOS 可以进行多路复用。它使用 ISOMessage 字段 11 和 41 来匹配请求和响应。
jPOS 也提供池化机制。
我有一个 java 应用程序(比如 A),它通过 TCP 套接字与应用程序(比如 B)通信。我的 java 应用程序是多线程的,最多可以处理 100 个线程。为了在 A --> B 之间通信,我们有 10 个套接字。
Challenges -
Connection Pooling - need connection pooling mechanism to handle n(say 100) number of thread(of application A), communicating to application B via x(say 10) number of TCP Socket.
Multithreading - How can two thread access same socket send the request one by one and get back the response mapped to appropriate thread.
Multiple request - Is it possible that two thread can send the request on single socket simultaneously.
我们可以通过任何框架来克服这个挑战吗?可能吗? 我听说 Spring Integration/ApacheCamel/Local MQ 可以解决这个问题。任何例子。
与Spring集成:
CachingClientConnectionFactory
TcpOutboundGateway
(含CachingClientConnectionFactory
)。- Collaborating Outbound and Inbound Channel Adapters.
但是你必须自己request/reply协作(通常基于消息中的内容);回复可能不会按发送顺序返回。由于没有执行该协作的标准方法,因此框架本身不支持它。
我能够通过 jPOS 解决上述问题。
jPOS 可以进行多路复用。它使用 ISOMessage 字段 11 和 41 来匹配请求和响应。
jPOS 也提供池化机制。