Próbuję utworzyć pulę kanałów/połączeń z serwerem kolejki i próbowałem użyć ObjectPool, ale mam problemy z używaniem go z poziomu example w ich witrynie.Czy są jakieś dobre samouczki lub przykłady dotyczące korzystania z Java ObjectPool/pools?
Do tej pory mam wątki, które działają, ale chcę, aby każdy z nich pobrał kanał z puli, a następnie go zwrócił. Rozumiem, jak go używać (borrowObject/returnObjects), ale nie wiem, jak utworzyć intial pulę.
Oto jak kanały są wykonane w RabbitMQ:
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("localhost");
Connection connection = factory.newConnection();
Channel channel = connection.createChannel();
i mój kod prostu wykorzystuje kanał robić rzeczy. Jestem zdezorientowany, ponieważ jedyny przykład, jaki mogłem znaleźć (na ich stronie), rozpoczyna się tak:
private ObjectPool<StringBuffer> pool;
public ReaderUtil(ObjectPool<StringBuffer> pool) {
this.pool = pool;
}
Co nie ma dla mnie sensu. Zdałem sobie sprawę, że jest to powszechne w nawiązywaniu połączeń z bazami danych, więc próbowałem znaleźć samouczki używające baz danych i ObjectPool, ale zdają się używać DBCP, który jest specyficzny dla baz danych (i nie mogę wydawać się używać logiki dla mojego serwera kolejki).
Wszelkie sugestie, jak z niego korzystać? Czy istnieje inne podejście stosowane do puli w java?
wow, dziękuję bardzo. Będę grać z kodem. Nie rozumiem, gdzie określić liczbę kanałów. W twoim przykładzie dzielisz jedno połączenie lub tam, gdzie mogę powiedzieć, że chcę wstępnie utworzyć połączenia X? – Lostsoul
Pule nie mają wstępnego odwzorowania ich połączonego obiektu. Tworzą je na żądanie i zabierają je z puli lub tworzą nowe, jeśli basen jest pusty. Więc zwykle nie ma limitu. Ale nie wiem, w jaki sposób klasy, z których korzystasz, lub klasa basenowa działają/do czego są zdolne. Właśnie przetłumaczyłem dla ciebie przykład :) – zapl
GenericObjectPool wstępnie utworzy połączone obiekty, jeśli włączysz wątek eksmisji i ustawisz właściwość "minIdle". http://commons.apache.org/pool/api-1.6/org/apache/commons/pool/impl/GenericObjectPool.html – dnault