tcp-inbound gateway가 사용하는 포트를 변경하는 방법이 있습니까? tcp-inbound-gateway가 사용하는 포트 및 타임 아웃을 데이터베이스에 유지되는 구성을 기반으로 설정하고 응용 프로그램을 다시 시작하지 않고 즉시 변경할 수있는 기능을 설정하고 싶습니다.즉석에서 tcp-ibound-gateway가 사용하는 포트를 변경하는 방법
public class RuntimeInboundGateway extends TcpInboundGateway implements SettingsSubscriber {
@Autowired
private Settings settings;
@PostConstruct
public void subscribe() {
settings.subscribe(this);
}
@Override
public void onSettingsChanged(Settings settings) {
this.stop();
AbstractByteArraySerializer serializer = new ByteArrayLfSerializer();
TcpNetServerConnectionFactory connectionFactory = new TcpNetServerConnectionFactory(settings.getPort());
connectionFactory.setSerializer(serializer);
connectionFactory.afterPropertiesSet();
this.setConnectionFactory(connectionFactory);
this.afterPropertiesSet();
this.start();
}
}
settings
객체가 싱글 콩과는 TCP를 변경할 때 수신 게이트웨이는 새로운 포트에서 수신 참으로 시작합니다이를 위해 나는 "게시 가입자를"패턴과 확장 TcpInboundGateway 클래스를 사용하기로 결정 그러나 흐름에서 인바운드 메시지를 더 보내지 않는 것처럼 보입니다. 다음은 XML 구성에서 발췌 한 것입니다 :
<int-ip:tcp-connection-factory id="connFactory" type="server" port="${port}"
serializer="serializer"
deserializer="serializer"/>
<bean id="serializer" class="org.springframework.integration.ip.tcp.serializer.ByteArrayLfSerializer"/>
<bean id="inboundGateway" class="com.example.RuntimeInboundGateway">
<property name="connectionFactory" ref="connFactory"/>
<property name="requestChannel" ref="requestChannel"/>
<property name="replyChannel" ref="responseChannel"/>
<property name="errorChannel" ref="exceptionChannel"/>
<property name="autoStartup" value="true"/>
</bean>
설정이 변경 될 때까지 문제없이 서비스에 대한 모든 요청을 기록 구성에 로그인 채널 어댑터가 있습니다. 그 후, 그것은하지 않으며 새 포트에 telnet localhost <NEW_PORT>
에 연결할 수 있지만받은 메시지가 표시되지 않습니다. 누군가가 한 번 봐서 원하는 행동이 어떻게 성취 될 수 있는지 말할 수 있습니까?
안녕하세요 @ 게리 러셀, 내 수치에 대한 문제의 원인은 나입니다. 우리는'ByteArrayLfSerializer'를 serialize와 deserialize 메시지에 사용합니다. 그래서 디폴트 deserializer를 사용하여 코드에서 deserializer를 설정하지 않았습니다. 방해해서 죄송합니다. 위의 코드 스 니펫이 향후 누군가에게 도움이되기를 바랍니다. – user6231016
TCP 이벤트를 수신하려면 비 Spring 관리 연결 팩토리에 이벤트 게시자를 삽입해야합니다. –
게리, 나는 얼마 동안 스프링 통합과 관련하여 일 해왔고, 스프링 통합을 사용하는 사람들이 인내심을 가지고 답을 찾고 문제를 해결하는 데 도움을주기 위해 많은 노력을 기울였습니다. 당신의 도움이 크게 감사한다고 말하고 지원하십시오. – user6231016