#spring #apache-camel
#весна #apache-верблюд
Вопрос:
У меня есть следующий код
private static class MyRouteBuilder extends RouteBuilder {
@Override
public void configure() throws Exception {
// from("spring-redis://localhost:6379?command=GETamp;serializer=#serializer")
from("spring-redis://10.0.0.247:6379?command=GETamp;serializer=#serializer")
.setHeader("CamelRedis.Key", constant("testKEY"))
.to("stream:out")
.beanRef("foo");
}
}
Я очень озадачен. Он работает хорошо и вставляет правильную пару Ключ / значение, когда я запускаю redis на локальном хосте, однако, когда я хочу сделать то же самое на удаленном хосте (здесь: 10.0.0.247 ), tcpdump показывает, что он даже не пытается связаться с удаленным хостом по сети!
Как я могу это исправить? Я попробовал вручную с помощью r edis-client -h 10.0.0.247
, и это сработало. Я также пробовал с помощью разрешения имен что-то вроде spring-redis://rd.my:6379?… но все равно теперь радость.
Как я могу это исправить?
Комментарии:
1. Вы поместили jedis jar в свой путь к классу? <зависимость> <Идентификатор группы> redis.clients</groupId> <artifactId>jedis</artifactId> <версия> 2.1.0</версия> </зависимость>
2. Да, на локальном хосте все это работает. Я прочитал что-то, что он не может перенаправить на экземпляры за пределами той же JVM? Означает ли это, что он может работать только на локальном хосте?
3. Нет, это не так. Я провел некоторый интеграционный тест, используя ip-адрес (не локальный хост), тест прошел без каких-либо ошибок. Можете ли вы проверить журнал клиента redis?
4. Спасибо. Немного дальше. Проблема, похоже, в том, что stream:out работает не так, как я предполагал. Не могли бы вы знать, где найти рабочий пример?
5. Вы можете использовать компонент журнала вместо компонента потока, если вы просто хотите что-то записать 🙂
Ответ №1:
Проверьте, разрешен ли порт 6379 или открыт для удаленных подключений с помощью
telnet 10.0.0.247 6379