回答
TCP沒有內置的對請求/回覆關聯的支持,因此Spring集成一次只允許在任何套接字上發出一個未完成的請求。您可以使用CachingClientConnectionFactory
來使用連接池來啓用一定數量的多線程。
這是正確的,每個套接字只能串行處理。從套接字讀取的線程在再次讀取之前等待併發送響應。 Spring Integration是否解決了這個問題?通過Spring集成,我可以發送多個請求並通過單個套接字異步接收響應? –
NO;閱讀我的答案;它使用信號量來防止多線程同時使用相同的套接字 - 不僅線程可能得到錯誤的響應,每個響應的單個數據包甚至可能會穿插 - 除非您有一個非常受控制的環境,否則很難做到自己想做的事情。該框架無法對此做出任何假設。當在單個套接字上多路複用時,您需要在消息本身中添加一些關聯數據。但是,只要您可以執行關聯,就可以使用協作通道適配器。 –
請參閱[此示例應用程序](https://github.com/spring-projects/spring-integration-samples/tree/master/intermediate/tcp-client-server-multiplex)以獲得該方法。 –
- 1. Java:多個套接字在一個線程中發送和接收維護
- 2. 在套接字中發送多個發送/接收
- 3. 套接字和多線程
- 4. 在同一個套接字上發送和接收
- 5. Java多線程套接字 - 如何按順序發送響應
- 6. 單個Flask進程接收多少個併發請求?
- 7. 在一個線程中通過tcp套接字發送和接收數據
- 8. 使用一個套接字對象在C#中發送和接收多個套接字#
- 9. C#客戶端套接字多次發送和接收
- 10. XMLHttpRequest發送郵件請求和接收2響應
- 11. 發送請求和接收響應的工具
- 12. 發送ajax請求和接收響應(同步)
- 13. 發送和接收套接字(TCP/IP)
- 14. java套接字發送和接收
- 15. UDP套接字發送和接收
- 16. VB.NET套接字發送和接收
- 17. 套接字 - 發送和接收
- 18. ESP8266發送和接收套接字
- 19. C++發送和接收套接字
- 20. 通過wlan和eth接口發送和接收單個套接字
- 21. 如何發送消息並在同一個套接字上接收響應
- 22. Web套接字多個請求
- 23. Linux套接字和多線程程序
- 24. 套接字在發出多個http發佈請求時掛起
- 25. ASP.NET接收和響應AJAX請求
- 26. 向.NET中的單個HTTP請求發送多個HTTP響應
- 27. 演員:可能發送和接收嵌套在一個接收
- 28. 線程(發送者)只發送請求時線程(收件人)如何向文件寫入請求和響應?
- 29. MPI發送和接收(多對多)
- 30. 多個ServerSockets,多個設備併發送到多個套接字
如果線程A發送請求,線程B發送請求,然後響應到達,會發生什麼情況。那個迴應是哪個線程? – f1sh
@ f1sh正確的是這個問題,該如何處理? –
這個問題是重複http://stackoverflow.com/questions/43137948/connection-pooling-and-multithreading-for-tcp-socket 請看上面的答案 –