Details

    • Type: New Feature New Feature
    • Status: Closed
    • Priority: Minor Minor
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 0.5
    • Labels:
      None
    • Patch Info:
      Patch Available

      Description

      I played around with ZeroMQ a bit this weekend. I thought it might be informative to write some glue code to run Thrift requests with ZeroMQ as the transport, so here it is.

        Activity

        Hide
        Roger Meier added a comment -

        I did small modifications on David's patch to support multicast via ZMQ_PUB and ZMQ_SUB sockets for C++:

        • add a test-sender.cpp and test-receiver.cpp
        • TZmqClient.h/TZmqServer.h other behavior for PUB/SUB Sockets
        • Makefile new files added

        only the oneway function from the provided sample has been tested, this is just a proof of concept

        It uses Encapsulated PGM see zmq_pgm or rfc3208.
        "PGM is a reliable and scalable multicast protocol that enables receivers to detect loss, request retransmission of lost data, or notify an application of unrecoverable loss."

        0MQ is a very nice framework, but currently I do not have a clear view how it could or should be integrated into Thrift.
        However placing that into contrib might be a good starting point to give it a try or think about...

        Show
        Roger Meier added a comment - I did small modifications on David's patch to support multicast via ZMQ_PUB and ZMQ_SUB sockets for C++: add a test-sender.cpp and test-receiver.cpp TZmqClient.h/TZmqServer.h other behavior for PUB/SUB Sockets Makefile new files added only the oneway function from the provided sample has been tested, this is just a proof of concept It uses Encapsulated PGM see zmq_pgm or rfc3208 . "PGM is a reliable and scalable multicast protocol that enables receivers to detect loss, request retransmission of lost data, or notify an application of unrecoverable loss." 0MQ is a very nice framework, but currently I do not have a clear view how it could or should be integrated into Thrift. However placing that into contrib might be a good starting point to give it a try or think about...
        Hide
        David Reiss added a comment -

        > I do not have a clear view how it could or should be integrated into Thrift.
        You mean in terms of what the code should look like or where we should put it? I think the code should look more-or-less like this. I think putting it in contrib, or in the main tree, or in a separate library are fine. I can commit this to contrib now if you want.

        Show
        David Reiss added a comment - > I do not have a clear view how it could or should be integrated into Thrift. You mean in terms of what the code should look like or where we should put it? I think the code should look more-or-less like this. I think putting it in contrib, or in the main tree, or in a separate library are fine. I can commit this to contrib now if you want.
        Hide
        Roger Meier added a comment -

        Yes, please commit this. It does not matter to me if it is within main tree or contrib.

        One missing thing was http://wiki.apache.org/thrift/ThriftIntegrationConventions , this makes it now clear how to handle zeromq in general.

        On question I had in mind was how the handle zeromq for all the different languages supported by Thrift.
        Nearly every language supported by Thrift has its own zeromq library.

        Show
        Roger Meier added a comment - Yes, please commit this. It does not matter to me if it is within main tree or contrib. One missing thing was http://wiki.apache.org/thrift/ThriftIntegrationConventions , this makes it now clear how to handle zeromq in general. On question I had in mind was how the handle zeromq for all the different languages supported by Thrift. Nearly every language supported by Thrift has its own zeromq library.
        Hide
        Nils Hügelmann added a comment - - edited

        I've ported the demo to csharp with a little tweak(Serversocket doesnt need to be ZMQ_REP to handle a Response by Thrift, only a compatible type like PAIR, XREP )
        I've not ported the multiserver yet.

        Patch also contains sample server and client

        Show
        Nils Hügelmann added a comment - - edited I've ported the demo to csharp with a little tweak(Serversocket doesnt need to be ZMQ_REP to handle a Response by Thrift, only a compatible type like PAIR, XREP ) I've not ported the multiserver yet. Patch also contains sample server and client
        Hide
        Roger Meier added a comment -

        thanks nils!

        just committed a slightly modified version of Zeromq for C#

        Show
        Roger Meier added a comment - thanks nils! just committed a slightly modified version of Zeromq for C#
        Hide
        Hudson added a comment -

        Integrated in Thrift #131 (See https://hudson.apache.org/hudson/job/Thrift/131/)
        THRIFT-812 Demo of Thrift over ZeroMQ (C#)
        Patch: Nils Huegelmann

        Show
        Hudson added a comment - Integrated in Thrift #131 (See https://hudson.apache.org/hudson/job/Thrift/131/ ) THRIFT-812 Demo of Thrift over ZeroMQ (C#) Patch: Nils Huegelmann

          People

          • Assignee:
            Unassigned
            Reporter:
            David Reiss
          • Votes:
            1 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development