0
私はSpring-xdセットアップ用にMessageBusとしてRedisを設定しました。ストリームに障害が発生すると、データはエラーキューにプッシュされます。私はそれらを読んで、宛先キューに戻そうとしています。しかし、私のシンクモジュールがデータを受信するのを見ていない。私がどこに間違っているのか理解してくれますか?SpringXDでのErrorHandling
コードスニペット。
public RedisTemplate<String, byte[]> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
final RedisTemplate<String, byte[]> template = new RedisTemplate<String, byte[]>();
template.setConnectionFactory(redisConnectionFactory);
template.setKeySerializer(new StringRedisSerializer());
template.setEnableDefaultSerializer(false);
return template;
}
List<String> listOfKeys = new ArrayList<>();
Set<byte[]> keys = redisTemplate.getConnectionFactory().getConnection().keys("ERRORS*".getBytes());
for (byte[] data : keys) {
listOfKeys.add(new String(data, 0, data.length));
}
for (String errorQueue : listOfKeys) {
String destinationQueue = errorQueue.replace("ERRORS:", EMPTY_STRING);
Long size = redisTemplate.opsForList().size(errorQueue);
for (int i = 0; i < size; i++) {
byte[] errorEvt = redisTemplate.opsForList().rightPop(errorQueue);
redisTemplate.opsForList().leftPush(destinationQueue, errorEvt);
}
}
ありがとうございます@Gary。私はその問題を発見した。宛先キューに接頭辞「キュー」がありません。 destinationQueue = "queue"でなければなりません。 + errorQueue.replace( "ERRORS:"、EMPTY_STRING); errorEvt(byte [] errorEvt = redisTemplate.opsForList()。rightPop(errorQueue);)を実際のペイロードに変換する方法を教えてください。テスト目的でmsgを記録したいと思います。 –
私の答えに編集を参照してください。 –