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

Reply via email to