Replies: 8 comments 1 reply
-
This situation is well documented here: https://docs.spring.io/spring-integration/docs/current/reference/html/ip.html#ip-gateways TCP has no standard way to provide request/reply correlation in the TCP stream so each socket can only be used for one request at-a-time. There are several solutions, including:
|
Beta Was this translation helpful? Give feedback.
-
Hi |
Beta Was this translation helpful? Give feedback.
-
There are no other alternatives. The |
Beta Was this translation helpful? Give feedback.
-
In my scene payload contain unique identifier. |
Beta Was this translation helpful? Give feedback.
-
It should, but the gateway is not designed to be extended that way; you would probably have to make a copy and add your modifications. Or, you can just use collaborating channel adapters (see the documentation I pointed you to), and store the pending replies in your own component. That would avoid copying any code. |
Beta Was this translation helpful? Give feedback.
-
See this sample for more info: https://github.com/spring-projects/spring-integration-samples/tree/main/intermediate/tcp-client-server-multiplex |
Beta Was this translation helpful? Give feedback.
-
I add IntegrationFlow The number of inconsistencies falls,But there will be a small number of them
|
Beta Was this translation helpful? Give feedback.
-
This one cannot work:
The You are missing a I'm moving this one to Discussions, since it does not reflect any problems in the project. |
Beta Was this translation helpful? Give feedback.
-
In what version(s) of Spring Integration are you seeing this issue?
5.4.13
Describe the bug
A clear and concise description of what the bug is.
below high concurrency TcpOutboundGateway class have Cannot correlate response - no pending reply for exception
It seems other thread removed AsyncReply from pendingReplies with connectionId,because the all thread use the same connectionId, so connectionId maybe not used as a unique identifier in pendingReplies sence.
I tried to change uuid instance connectionId put pendingReplies ,but when put uuid to header in method handleRequestMessage,
the header in method onMessage nonexistent uuid,
To Reproduce
high concurrency call
Expected behavior
below high concurrency request not match response
Beta Was this translation helpful? Give feedback.
All reactions