code: public Object invoke(String request, Map<String,String> metaInfo) {
          try {
              Map<String,Object> headers = new HashMap<String,Object>();
              if (metaInfo != null) {
                  for (String name : metaInfo.keySet())
                      headers.put(name, metaInfo.get(name));
              }
              Exchange exchange = prepareCamelExchange(request, headers);
              getProcessor().process(exchange);
              return exchange.getOut().getBody(String.class);
          }
          catch (Exception ex) {
              logger.severeException(ex.getMessage(), ex);
  
              // build the response as a string for now as this is fastest
              if (request == null || request.isEmpty() || ListenerHelper.isJson(request)) {
                  return jsonResponse(ex);
              }
              else {
                  return xmlResponse(ex);
              }
          }
      }
docs: TODO consider threading