I would like to understand more about your comments. I am implementing a Client pool because each Client opens a socket, and even if I client.close() properly, lingering (TIME_WAIT) sockets eventually take up all the available sockets on my machine.
1. Would whatever you're talking about simplify pooling? 2. The fact that the tube a client is using is local to a thread is awkward in a multithreaded program, including for pooling. I'd like to understand if that is changing. On Nov 10, 5:49 pm, Bob Tykulsker <[email protected]> wrote: > I was thinking about an option to instantiate the ClientImpl with either > a single, shared connected to the beanstalk daemon or per-thread, > non-shared connections to the beanstalk daemon. > > On 11/10/2010 05:40 AM, Alexander Azarov wrote: > > > Bob, what do you mean? > > > On 9 ноя, 21:51, Bob Tykulsker<[email protected]> wrote: > >> How about a single-threaded ClientImpl versus a multi-threaded > >> ClientImpl .... ? > > >> Bob > > >> On 11/09/2010 10:31 AM, Alexander Azarov wrote: > > >>> 09.11.2010, в 21:13, dan wrote: > >>>> Aha, thanks! > >>>> May I suggest to whomever controls the docs that it be documented. > >>>> Sounds like the right thing is to watch in the run() method. > >>> An alternative approach is to queue all the requests to "single thread" > >>> ExecutorService (see Executors.newSingleThreadExecutor). Probably > >>> overkill, but this guarantees the calls to ClientImpl are made from the > >>> same thread always. > >>>> On Nov 4, 12:23 pm, Alexander Azarov<[email protected]> wrote: > >>>>> Yes, I do understand. > >>>>> There is ProtocolHandler object in ClientImpl and it is ThreadLocal: > >>>>>https://github.com/RTykulsker/JavaBeanstalkClient/blob/master/src/mai... > >>>>> Which means a new ProtocolHandler gets initialized watching "default" > >>>>> tube only, when you call ClientImpl methods from another thread. > >>>>> On 4 ноя, 06:29, Dan Frankowski<[email protected]> wrote: > >>>>>> Does anyone understand why I am seeing the following behavior in > >>>>>> JavaBeanstalkClient? > >>>>>> Consumer watches a particular tube (mytube) in its constructor, then in > >>>>>> run() (new thread) all of a sudden it is watching the default tube > >>>>>> again! If > >>>>>> I watch mytube in run() it sticks. Output and code below. > >>>>>> Ubuntu 10.4 > >>>>>> beanstalk version 1.4.3-1 > >>>>>> Java BeanstalkClient 1.2.2 > >>>>>> All latest I can get. > >>>>>> Dan > >>>>>> *Output: > >>>>>> * > >>>>>> 20101103 22:17:16 INFO: watching [mytube] > >>>>>> 20101103 22:17:16 INFO: watching [mytube] > >>>>>> 20101103 22:17:16 INFO: watching [default] > >>>>>> *Code: > >>>>>> * > >>>>>> import java.util.logging.Logger; > >>>>>> import com.surftools.BeanstalkClient.Client; > >>>>>> import com.surftools.BeanstalkClientImpl.ClientImpl; > >>>>>> public class Foo5 { > >>>>>> private static Logger logger = > >>>>>> Logger.getLogger(Foo5.class.getName()); > >>>>>> private static final String TUBE_NAME = "mytube"; > >>>>>> private static class Consumer implements Runnable { > >>>>>> private Client client; > >>>>>> public Consumer() { > >>>>>> client = new ClientImpl("localhost", 11300); > >>>>>> watch(); > >>>>>> } > >>>>>> private void watch() { > >>>>>> client.watch(TUBE_NAME); // for reserve() > >>>>>> client.ignore("default"); // Don't get tasks from > >>>>>> "default" > >>>>>> queue > >>>>>> logWatching(); // mytube > >>>>>> } > >>>>>> public void logWatching() { > >>>>>> logger.info("watching " + client.listTubesWatched()); > >>>>>> } > >>>>>> @Override > >>>>>> public void run() { > >>>>>> // watch(); // Uncomment this to watch mytube > >>>>>> logWatching(); // default?! why? > >>>>>> } > >>>>>> } > >>>>>> public static void main(String[] args) throws Exception { > >>>>>> Consumer consumer = new Consumer(); > >>>>>> consumer.logWatching(); // mytube > >>>>>> new Thread(consumer).start(); > >>>>>> } > >>>>>> } > >>>> -- > >>>> You received this message because you are subscribed to the Google > >>>> Groups "beanstalk-talk" group. > >>>> To post to this group, send email to [email protected]. > >>>> To unsubscribe from this group, send email to > >>>> [email protected]. > >>>> For more options, visit this group > >>>> athttp://groups.google.com/group/beanstalk-talk?hl=en. -- You received this message because you are subscribed to the Google Groups "beanstalk-talk" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/beanstalk-talk?hl=en.
