Cannot consume from http endpoint

你离开我真会死。 提交于 2020-01-03 15:35:08

问题


My route is given below i am trying to exchange data using HTTP component , the URI contains submit data and get in response should get an data but its not working

  <route>
    <from uri="http://gatest.dnb.com/daasaccess/scripts/broker.asp?request=%3C%3Fxml+version%3D%271.0%27+encoding%3D%27UTF-8%27%3F%3E%3CDGX%3E%3CSIGNONMSGSRQV1%3E%3CSONRQ%3E%3CDTCLIENT%3E2007-05-04%3C%2FDTCLIENT%3E%3CUSERID%3Esalesautomation%3C%2FUSERID%3E%3CUSERPASS%3ESFAAdmin%3C%2FUSERPASS%3E%3CLANGUAGE%3EEN%3C%2FLANGUAGE%3E%3CFI%3E%3CORG%3EDandB%3C%2FORG%3E%3C%2FFI%3E%3CAPPID%3EXML%3C%2FAPPID%3E%3CAPPVER%3E0010%3C%2FAPPVER%3E%3C%2FSONRQ%3E%3C%2FSIGNONMSGSRQV1%3E%3CCREDITMSGSRQV2%3E%3CDATATRNRQ%3E%3CTRNUID%3E2D995FE0173B2C%3C%2FTRNUID%3E%3CDATARQ%3E%3CSRVRTID%3E%3C%2FSRVRTID%3E%3CSVC_TYPE_CD%3E%3C%2FSVC_TYPE_CD%3E%3CREAS_CD%3E%3C%2FREAS_CD%3E%3CCUST_ENDR%3E%3C%2FCUST_ENDR%3E%3CCUST_RQ%3E%3C%2FCUST_RQ%3E%3CREFRESH_IND%3E%3C%2FREFRESH_IND%3E%3CIGNORE_REQD_FLDS_IND%3E%3C%2FIGNORE_REQD_FLDS_IND%3E%3CSUBJ_DET%3E%3CDUNS_NBR%3E829654420%3C%2FDUNS_NBR%3E%3CCTRY_CD%3E%3C%2FCTRY_CD%3E%3CTRD_UP_IND%3E%3C%2FTRD_UP_IND%3E%3CPRIM_NME%3E%3C%2FPRIM_NME%3E%3CBUS_REGN_NBR%3E%3C%2FBUS_REGN_NBR%3E%3CBUS_REGN_NBR_TYPE_CD%3E%3C%2FBUS_REGN_NBR_TYPE_CD%3E%3CADR_LINE%3E%3C%2FADR_LINE%3E%3CPOST_TOWN%3E%3C%2FPOST_TOWN%3E%3CPRIM_GEO_AREA%3E%3C%2FPRIM_GEO_AREA%3E%3CPOST_CODE%3E%3C%2FPOST_CODE%3E%3CTLCM_NBR%3E%3C%2FTLCM_NBR%3E%3C%2FSUBJ_DET%3E%3CPROD%3EEnterprise+Management%3C%2FPROD%3E%3CPROD_TYPE_CD%3ED%3C%2FPROD_TYPE_CD%3E%3CDELV_REQS_NOW%3E%3CDELV_MODE_CD%3EDIRECT%3C%2FDELV_MODE_CD%3E%3CDELV_FMT_CD%3EXML%3C%2FDELV_FMT_CD%3E%3CLANG%3EEN%3C%2FLANG%3E%3CDELV_EMAIL%3E%3C%2FDELV_EMAIL%3E%3CDELV_EMAIL_CC%3E%3C%2FDELV_EMAIL_CC%3E%3C%2FDELV_REQS_NOW%3E%3CDELV_REQS_INV%3E%3CDELV_MODE_CD%3E%3C%2FDELV_MODE_CD%3E%3CDELV_FMT_CD%3E%3C%2FDELV_FMT_CD%3E%3CLANG%3E%3C%2FLANG%3E%3CDELV_EMAIL%3E%3C%2FDELV_EMAIL%3E%3CDELV_EMAIL_CC%3E%3C%2FDELV_EMAIL_CC%3E%3C%2FDELV_REQS_INV%3E%3CDELV_REQS_NTFY%3E%3CDELV_MODE_CD%3E%3C%2FDELV_MODE_CD%3E%3CDELV_FMT_CD%3E%3C%2FDELV_FMT_CD%3E%3CLANG%3E%3C%2FLANG%3E%3CDELV_EMAIL%3E%3C%2FDELV_EMAIL%3E%3CDELV_EMAIL_CC%3E%3C%2FDELV_EMAIL_CC%3E%3C%2FDELV_REQS_NTFY%3E%3C%2FDATARQ%3E%3C%2FDATATRNRQ%3E%3C%2FCREDITMSGSRQV2%3E%3C%2FDGX%3E"/>
    <log message="starting....."/>
    <process ref="nextgenProcessor"/>
    <to uri="file://src/test"/>
    <log message="ending....."/>
  </route>

I am getting below error :

[ERROR] Error occurred while running main from: org.apache.camel.spring.Main
[ERROR] 
java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.apache.camel.maven.RunMojo$1.run(RunMojo.java:488)
    at java.lang.Thread.run(Unknown Source)
Caused by: org.apache.camel.RuntimeCamelException: java.lang.UnsupportedOperationException: Cannot consume from http endpoint

回答1:


Basically the error message is correct, you cannot use the http component as a consumer. However the documentation is kind of unhelpful. The first line says "The http: component provides HTTP based endpoints for consuming external HTTP resources" but then in the next section it states "You can only produce to endpoints generated by the HTTP component. Therefore it should never be used as input into your camel Routes."

One approach would be to use something like the 'direct' or 'quartz2' components as the consumer, then use the 'http' component in a producer. For example, this route will run every minute, submit to the URL specified and save the response in /tmp with a timestamped filename :-

<route id="httpFetch">
    <from uri="quartz2://httpFetch?cron=00+/1+*+?+*+1-5" />
    <to uri="http://gatest.dnb.com/daasaccess/scripts/broker.asp?request=%3C%3Fxml+version%3D%271.0%27+encoding%3D%27UTF-8%27%3F%3E%3CDGX%3E%3CSIGNONMSGSRQV1%3E%3CSONRQ%3E%3CDTCLIENT%3E2007-05-04%3C%2FDTCLIENT%3E%3CUSERID%3Esalesautomation%3C%2FUSERID%3E%3CUSERPASS%3ESFAAdmin%3C%2FUSERPASS%3E%3CLANGUAGE%3EEN%3C%2FLANGUAGE%3E%3CFI%3E%3CORG%3EDandB%3C%2FORG%3E%3C%2FFI%3E%3CAPPID%3EXML%3C%2FAPPID%3E%3CAPPVER%3E0010%3C%2FAPPVER%3E%3C%2FSONRQ%3E%3C%2FSIGNONMSGSRQV1%3E%3CCREDITMSGSRQV2%3E%3CDATATRNRQ%3E%3CTRNUID%3E2D995FE0173B2C%3C%2FTRNUID%3E%3CDATARQ%3E%3CSRVRTID%3E%3C%2FSRVRTID%3E%3CSVC_TYPE_CD%3E%3C%2FSVC_TYPE_CD%3E%3CREAS_CD%3E%3C%2FREAS_CD%3E%3CCUST_ENDR%3E%3C%2FCUST_ENDR%3E%3CCUST_RQ%3E%3C%2FCUST_RQ%3E%3CREFRESH_IND%3E%3C%2FREFRESH_IND%3E%3CIGNORE_REQD_FLDS_IND%3E%3C%2FIGNORE_REQD_FLDS_IND%3E%3CSUBJ_DET%3E%3CDUNS_NBR%3E829654420%3C%2FDUNS_NBR%3E%3CCTRY_CD%3E%3C%2FCTRY_CD%3E%3CTRD_UP_IND%3E%3C%2FTRD_UP_IND%3E%3CPRIM_NME%3E%3C%2FPRIM_NME%3E%3CBUS_REGN_NBR%3E%3C%2FBUS_REGN_NBR%3E%3CBUS_REGN_NBR_TYPE_CD%3E%3C%2FBUS_REGN_NBR_TYPE_CD%3E%3CADR_LINE%3E%3C%2FADR_LINE%3E%3CPOST_TOWN%3E%3C%2FPOST_TOWN%3E%3CPRIM_GEO_AREA%3E%3C%2FPRIM_GEO_AREA%3E%3CPOST_CODE%3E%3C%2FPOST_CODE%3E%3CTLCM_NBR%3E%3C%2FTLCM_NBR%3E%3C%2FSUBJ_DET%3E%3CPROD%3EEnterprise+Management%3C%2FPROD%3E%3CPROD_TYPE_CD%3ED%3C%2FPROD_TYPE_CD%3E%3CDELV_REQS_NOW%3E%3CDELV_MODE_CD%3EDIRECT%3C%2FDELV_MODE_CD%3E%3CDELV_FMT_CD%3EXML%3C%2FDELV_FMT_CD%3E%3CLANG%3EEN%3C%2FLANG%3E%3CDELV_EMAIL%3E%3C%2FDELV_EMAIL%3E%3CDELV_EMAIL_CC%3E%3C%2FDELV_EMAIL_CC%3E%3C%2FDELV_REQS_NOW%3E%3CDELV_REQS_INV%3E%3CDELV_MODE_CD%3E%3C%2FDELV_MODE_CD%3E%3CDELV_FMT_CD%3E%3C%2FDELV_FMT_CD%3E%3CLANG%3E%3C%2FLANG%3E%3CDELV_EMAIL%3E%3C%2FDELV_EMAIL%3E%3CDELV_EMAIL_CC%3E%3C%2FDELV_EMAIL_CC%3E%3C%2FDELV_REQS_INV%3E%3CDELV_REQS_NTFY%3E%3CDELV_MODE_CD%3E%3C%2FDELV_MODE_CD%3E%3CDELV_FMT_CD%3E%3C%2FDELV_FMT_CD%3E%3CLANG%3E%3C%2FLANG%3E%3CDELV_EMAIL%3E%3C%2FDELV_EMAIL%3E%3CDELV_EMAIL_CC%3E%3C%2FDELV_EMAIL_CC%3E%3C%2FDELV_REQS_NTFY%3E%3C%2FDATARQ%3E%3C%2FDATATRNRQ%3E%3C%2FCREDITMSGSRQV2%3E%3C%2FDGX%3E"/>
    <to uri="file:/tmp?fileName=data-${date:now:yyyyMMdd-HHmm}.xml&amp;tempFileName=data-${date:now:yyyyMMdd-HHmm}.xml.part" />
</route>



回答2:


You must specify the component, which would be responsible of consumption from http:

from("jetty:http://localhost:8080/test")
    .to(...something else...);

Don't forget to include the component's jar into your maven/gradle project.



来源:https://stackoverflow.com/questions/34035908/cannot-consume-from-http-endpoint

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!