Настройка Amazon ElastiCache с spymemcached в Java - PullRequest
7 голосов
/ 01 февраля 2012

Мне не удалось найти хороший учебник по Memcached на Amazon Cloud, и я очень новичок в этой цели кеширования. Я пытаюсь использовать memcached через сервис Amazon ElastiCache и с клиентом spymemcached для фактических вызовов memcached.

Вот что я сейчас делаю на Java:

try {
        ConnectionFactoryBuilder connectionFactoryBuilder = new ConnectionFactoryBuilder();
        MemcachedClient memcachedClient = new MemcachedClient(
                connectionFactoryBuilder.build(),
                AddrUtil.getAddresses("<beginning of cache node end point grabbed from AWS Console>.cache.amazonaws.com:11211"));
        memcachedClient.set("test", 12, new Integer(12));
        System.out.println(memcachedClient.get("test"));
    } catch (IOException ioException) {
        ioException.printStackTrace();
    }

Ошибка, которую я получаю при попытке это:

java.net.ConnectException: Connection refused
at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:567)
at net.spy.memcached.MemcachedConnection.handleIO(MemcachedConnection.java:414)
at net.spy.memcached.MemcachedConnection.handleIO(MemcachedConnection.java:278)
at net.spy.memcached.MemcachedClient.run(MemcachedClient.java:1981)
 2012-02-01 19:25:35.415 WARN net.spy.memcached.MemcachedConnection:  Closing, and        reopening {QA sa=<node endpoint>.cache.amazonaws.com/184.73.64.56:11211, #Rops=0, #Wops=2, #iq=0, topRop=null, topWop=net.spy.memcached.protocol.ascii.StoreOperationImpl@be8c3e, toWrite=0, interested=0}, attempt 1.
 net.spy.memcached.OperationTimeoutException: Timeout waiting for value
at net.spy.memcached.MemcachedClient.get(MemcachedClient.java:1142)
at net.spy.memcached.MemcachedClient.get(MemcachedClient.java:1157)
at com.amazon.imaging.demo.SQSQueueManager.requeue(SQSQueueManager.java:117)
at com.amazon.imaging.demo.SQSQueueManager.requeue(SQSQueueManager.java:88)
at com.amazon.imaging.demo.DemoUI$4.run(DemoUI.java:368)
at com.amazon.imaging.demo.DemoUI.main(DemoUI.java:391)
Caused by: net.spy.memcached.internal.CheckedOperationTimeoutException: Timed out waiting for operation - failing node: <node endpoint>.cache.amazonaws.com/184.73.64.56:11211
at net.spy.memcached.internal.OperationFuture.get(OperationFuture.java:65)
at net.spy.memcached.internal.GetFuture.get(GetFuture.java:37)
at net.spy.memcached.MemcachedClient.get(MemcachedClient.java:1135)
... 5 more

У кого-нибудь есть идеи или опыт? Спасибо!

1 Ответ

2 голосов
/ 21 марта 2012

Где вы выполняете это?Из с в экземпляре EC2 или из внешней сети.Помните, что серверы ElastiCache связаны группой безопасности, которая ограничивает доступ к экземплярам ElastiCAche.Так что проверьте группу безопасности и другие конфигурации, которые позволяют вам подключаться к серверу Memcached.Насколько я знаю, доступ к ElastiCache невозможен за пределами границы AWS

Остальная часть кода выглядит нормально, а cConsider использует такую ​​среду, как Spring, для обработки экземпляров объекта клиента memcache и связанной с ними конфигурации.

...