Camel
  1. Camel
  2. CAMEL-4565

Allow to send messages using a user supplied pojo interface

    Details

    • Type: Improvement Improvement
    • Status: Open
    • Priority: Major Major
    • Resolution: Unresolved
    • Affects Version/s: None
    • Fix Version/s: None
    • Component/s: None
    • Labels:
      None
    • Estimated Complexity:
      Unknown

      Description

      The basic requirement is that we want to send a user defined object to a camel endpoint. The user code for sending the object should not contain any camel code.

      So imagine a simple DTO like Person with properties name and age. I would like to use an interface like

      interface PersonSender

      { void send(Person person); }

      So in the use code I code get an implementation injected that I simply could call with
      sender.send(person);

      So this is quite similar to our Pojo Messaging @Produce but I don´t want to send a BeanInvocation. Instead I would like to just have the Person object in the body. Ideally this should also support request / response if there is a return type.

      Additionally it should be configurable if it should send aynschronously or synchronously.

      Optionally we may also support a handler or Future for the response.

      To get the interface implementation we should support up to three variants.
      1) Create the dynamic proxy programmatically
      2) Define the proxy thiough a spring bean
      3) Create and inject the proxy using the @Produce annotation (we will need a flag to switch behaviour or use a second annotation)

        Activity

        Hide
        Peter Salnikov added a comment -

        Hi!
        I've come to the same situation, when I need to have my POJO in body instead of BeanInvocation.
        Do you have any news about this improvement?

        Show
        Peter Salnikov added a comment - Hi! I've come to the same situation, when I need to have my POJO in body instead of BeanInvocation. Do you have any news about this improvement?
        Hide
        Christian Schneider added a comment -

        The ProxyHelper seems to always create a BeanInvocation. So I think we are not already there. I now work out a prototype of a InvocationHandler for
        pojo messaging.

        Show
        Christian Schneider added a comment - The ProxyHelper seems to always create a BeanInvocation. So I think we are not already there. I now work out a prototype of a InvocationHandler for pojo messaging.
        Hide
        Christian Schneider added a comment -

        Looks like at least for the proxy the requirements should be met according to the documentation. I will test this and close the ticket if it simply works.

        Show
        Christian Schneider added a comment - Looks like at least for the proxy the requirements should be met according to the documentation. I will test this and close the ticket if it simply works.
        Hide
        David J. M. Karlsen added a comment -

        True - actually I use exactly this technique. All you have to do is to put in:

        convertBodyTo type="theArgumentType"
        

        for 1-argument.

        Show
        David J. M. Karlsen added a comment - True - actually I use exactly this technique. All you have to do is to put in: convertBodyTo type="theArgumentType" for 1-argument.
        Hide
        Claus Ibsen added a comment -

        I think we already support this. Check out
        http://camel.apache.org/using-camelproxy.html

        But there may be a missing piece somewhere, but I suggest to check that page, and see if there is something missing.

        Show
        Claus Ibsen added a comment - I think we already support this. Check out http://camel.apache.org/using-camelproxy.html But there may be a missing piece somewhere, but I suggest to check that page, and see if there is something missing.

          People

          • Assignee:
            Unassigned
            Reporter:
            Christian Schneider
          • Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

            • Created:
              Updated:

              Development