Java 이상 - Dubbo RemotingException: message can not send, because channel is closed
1672 단어 이상
문제 설명
이런 상황에서 소비자가 서비스를 요청할 때 계속 알림
message can not send, because channel is closed
.문제 분석(참조용)
메시지 can not send, because channel is closed, 파이프가 닫혀서 메시지를 보낼 수 없음을 의미합니다.왜 메시지를 보내야 하는지는 소비자 A가 공급자 B를 요청할 때 등록센터에서 공급자 B를 찾았기 때문이다. 이때 공급자 B가 서비스를 실행해야 하는지, 어떤 서비스를 실행해야 하는지, 파라미터가 무엇인지, 바로 등록센터가 보내야 하는 메시지를 알려야 한다.
문제 해결
포트가 열리지 않았기 때문에 이 문제가 발생했습니다.우리는 모든 Dubbo 응용 프로그램이 시스템 포트를 차지한다는 것을 알고 있습니다. 기본값은 20880입니다.Dubbo 앱이 늘어나면 개방된 포트도 늘어나야 한다.이것도 자주 소홀히 되는 점이다.다음 방법으로 확인할 수 있습니다.
vim /etc/sysconfig/iptables
를 통해 다음과 같은 포트 설정을 볼 수 있습니다.-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 20880:20890 -j ACCEPT
이러한 구성은 22 포트 및 20880 ~ 20890 (포함) 포트가 켜져 있음을 나타냅니다.만약 추가가 필요하다면, 추가된 후에 아래의 두 가지 명령을 실행해야 한다
/etc/init.d/iptables restart
/etc/init.d/iptables save
iptables에 대한 자세한 내용은 블로그 《Linux - iptables》를 참조하십시오.
기타 상황
한 네티즌은 다음과 같은 상황도 메시지 can not send를 초래할 수 있다고 말했다. 왜냐하면 채널 is closed.실천 분석을 통해 다음과 같은 상황은 결코 이 문제의 출현을 초래하지 않을 것이다.
Failed to invoke the method xxx in the service com.xxx.xxx.XxxService. No provider available for the service ...
(끝)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Springboot 사용자 정의 예외 처리 상세 정보배경 Springboot은 기본적으로 이상한 처리를 모델 AndView에 집중시켰지만, 프로젝트의 실제 과정에서 이렇게 하면 우리의 요구를 만족시킬 수 없습니다.구체적인 사용자 정의 이상 처리는 다음과 같다. 구체적...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.