Hi Gonzalo, Can you try building the latest from jzmq master? Not knowing what 2.1.2-SNAPSHOT you have, I can't be certain which fixes are included in your version.
These issues might be contributing to your stability problems that have since been resolved: - https://github.com/zeromq/jzmq/issues/174 - https://github.com/zeromq/jzmq/issues/186 Also, I'm working on build more stable/interruptible zmq devices. >From looking at your code, you're basically use the zmq queue device. Here is my WIP for the queue device: https://github.com/trevorbernard/jzmq/commit/8ff283764340758159ab915afcbbe87894882a31 This is completely untested but I intend to finalize it over the weekend. Warmest regards, Trev On Fri, Mar 8, 2013 at 7:57 AM, Gonzalo Vasquez <gvasq...@altiuz.cl> wrote: > Dear Min, > > File pom.xml inside jzmq-master.zip says "2.1.2-SNAPSHOT" > > ZMQ is the latest, i.e. 3.2.2 > > Gonzalo Vásquez Sáez > Gerente Investigación y Desarrollo (R&D) > Altiuz Soluciones Tecnológicas de Negocios Ltda. > Av. Nueva Tajamar 555 Of. 802, Las Condes - CP 7550099 > +56 2 335 2461 > gvasq...@altiuz.cl > http://www.altiuz.cl > http://www.altiuzreports.com > <https://www.facebook.com/altiuz> <http://twitter.com/altiuz> > <http://www.linkedin.com/company/altiuz> > > El 07-03-2013, a las 22:59, Min <mini...@gmail.com> escribió: > > Hi, > > And what version of jzmq and libzmq did you > use? > > Thanks > Min > > 2013년 3월 7일 목요일에 Gonzalo Vasquez님이 작성: > >> This is the client side code that I use to communicate with the server: >> >> private byte[] getByte(final String table, final String name, >> final int doc_off, final int doc_len, final int comp_off, >> final int comp_len, final char compressionType) throws Exception { >> File file = new File(cacheRoot, table.substring(0, 3) + "/DOC/" + >> name); //$NON-NLS-1$ >> Context ctx = ZMQ.context(1); >> >> Socket req = ctx.socket(ZMQ.REQ); >> req.connect(ENDPOINT); >> >> // TODO Crear POJO en vez de Map >> Map<String, String> params = new HashMap<String, String>(); >> params.put("path", file.getAbsolutePath()); >> params.put("dOff", String.valueOf(doc_off)); >> params.put("dLen", String.valueOf(doc_len)); >> params.put("cOff", String.valueOf(comp_off)); >> params.put("clen", String.valueOf(comp_len)); >> params.put("cType", String.valueOf(compressionType)); >> >> ByteArrayOutputStream baos = new ByteArrayOutputStream(); >> ObjectOutputStream oos = new ObjectOutputStream(baos); >> oos.writeObject(params); >> oos.close(); >> params.clear(); >> baos.close(); >> >> req.send(baos.toByteArray(), NO_FLAGS); >> byte[] data = req.recv(); >> req.close(); >> ctx.term(); >> return data; >> } >> >> >> And on the server side I use the three attached classes >> >> public void run() { >> // Prepare our context and sockets >> Context context = ZMQ.context(1); >> Socket frontend = context.socket(ZMQ.ROUTER); >> Socket backend = context.socket(ZMQ.DEALER); >> frontend.bind("tcp://*:5559"); >> backend.bind("inproc://workers"); >> >> Thread threads[] = new Thread[workers]; >> for (int i = 0; i < threads.length; i++) { >> threads[i] = new WorkerThread(i, context); >> threads[i].start(); >> } >> System.out.println("launch and connect broker."); >> >> // Initialize poll set >> Poller items = context.poller(2); >> items.register(frontend, Poller.POLLIN); >> items.register(backend, Poller.POLLIN); >> >> boolean more = false; >> byte[] message; >> >> // Switch messages between sockets >> try { >> while (!Thread.currentThread().isInterrupted()) { >> // poll and memorize multipart detection >> items.poll(); >> >> if (items.pollin(0)) { >> while (true) { >> // receive message >> message = frontend.recv(0); >> more = frontend.hasReceiveMore(); >> >> // Broker it >> backend.send(message, more ? ZMQ.SNDMORE : 0); >> if (!more) { >> break; >> } >> } >> } >> if (items.pollin(1)) { >> while (true) { >> // receive message >> message = backend.recv(0); >> more = backend.hasReceiveMore(); >> // Broker it >> frontend.send(message, more ? ZMQ.SNDMORE : 0); >> if (!more) { >> break; >> } >> } >> } >> } >> } finally { >> // We never get here but clean up anyhow >> frontend.close(); >> backend.close(); >> context.term(); >> } >> } >> >> Does that help solving the problem? >> Gonzalo Vásquez Sáez >> Gerente Investigación y Desarrollo (R&D) >> Altiuz Soluciones Tecnológicas de Negocios Ltda. >> Av. Nueva Tajamar 555 Of. 802, Las Condes - CP 7550099 >> +56 2 335 2461 >> gvasq...@altiuz.cl >> http://www.altiuz.cl >> http://www.altiuzreports.com >> <https://www.facebook.com/altiuz> <http://twitter.com/altiuz> >> <http://www.linkedin.com/company/altiuz> >> >> El 05-03-2013, a las 18:19, Pieter Hintjens <p...@imatix.com> escribió: >> >> >> On Tue, Mar 5, 2013 at 9:57 PM, Gonzalo Vasquez <gvasq...@altiuz.cl>wrote: >> >>> Hi there! >>> >>> Upon stressing a Java / ZMQ based piece of software, I'm getting TWO >>> repeated errors every now and then, they are: >>> >> >> Hi Gonzalo, >> >> As with any error you're trying to report (to any project, I guess), the >> best tool is a minimal (I can't emphasize that enough) test case that >> provokes the crash. If you can make this in Java we can recreate it in C, >> and see where the problem is. >> >> The test case is essential to fixing the problem since after we fix it we >> have to run the same test case to be 100% the problem is gone. >> >> -Pieter >> >> _______________________________________________ >> zeromq-dev mailing list >> zeromq-dev@lists.zeromq.org >> http://lists.zeromq.org/mailman/listinfo/zeromq-dev >> >> _______________________________________________ > zeromq-dev mailing list > zeromq-dev@lists.zeromq.org > http://lists.zeromq.org/mailman/listinfo/zeromq-dev > > > > _______________________________________________ > zeromq-dev mailing list > zeromq-dev@lists.zeromq.org > http://lists.zeromq.org/mailman/listinfo/zeromq-dev > >
_______________________________________________ zeromq-dev mailing list zeromq-dev@lists.zeromq.org http://lists.zeromq.org/mailman/listinfo/zeromq-dev