Я новичок в интеграции Spring. Ситуация заключается в том, что я должен динамически подключаться к Tcp-серверу (т. Е. DNS будет динамически генерироваться во время выполнения на основе некоторых параметров). Из-за этого я использую Service Activator для ручного создания Tcp Connections и отправки сообщений. Я переопределил CachingClientConnectionFactory, чтобы использовать концепцию общих подключений (с одноразовым = «false»). Я слушал сообщения, используя TcpReceivingChannelAdaptor, переопределяя метод onMessage. Проблема заключается в том, что сервер либо отвечает Успехом, либо неудачей (с сообщениями общего характера) без КорреляцииID. Есть ли способ соотнести запрос с ответом?Весна Интеграция - TCP-ответ Корреляция
Я пробовал использовать TcpOutboundGateway, но при таком подходе я также получаю ту же проблему. Я использовал TcpConnectionSupport для отправки сообщений:
//Sample Code.
final String correlationId = "" // Dynamic unique number
TcpOutboundGateway outboundGateway = new TcpOutboundGateway(){
public synchronized boolean onMessage(Message<?> message) {
ByteArrayToStringConverter converter = new ByteArrayToStringConverter();
String response = converter.convert((byte[]) message
.getPayload());
logger.info(correlationId);
return false;
}
};
DefaultCachingClientConnectionFactory connFactory = new DefaultCachingClientConnectionFactory();
TcpConnectionSupport con = connFactory.obtainConnection();
GenericMessage<String> msg = new GenericMessage<String>("Sample Message" + correlationId);
con.registerListener(outboundGateway);
con.send(msg);
// DefaultCachingClientConnectionFactory is the subclass of CachingClientConnectionFactory.
При отправке нескольких сообщений, каждый раз, когда я получаю ту же корреляцию напечатанный в методе «OnMessage». Я прочитал here, что Outbound Gateway будет коррелировать сообщения. Пожалуйста, помогите мне. Может быть, я делаю что-то неправильно.
Благодаря