[Backlogmanager] [FIWARE-JIRA] (HELP-20573) [fiware-stackoverflow] My dockerized service doesn' t receive the notification sent by Orion Context Broker

Fernando Lopez (JIRA) jira-help-desk at jira.fiware.org
Thu Jan 19 16:35:00 CET 2023


     [ https://jira.fiware.org/browse/HELP-20573?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Fernando Lopez updated HELP-20573:
----------------------------------
    Status: Answered  (was: In Progress)

> [fiware-stackoverflow] My dockerized service doesn't receive the notification sent by Orion Context Broker
> --------------------------------------------------------------------------------------------------------------
>
>                 Key: HELP-20573
>                 URL: https://jira.fiware.org/browse/HELP-20573
>             Project: Help-Desk
>          Issue Type: Monitor
>          Components: FIWARE-TECH-HELP
>            Reporter: Backlog Manager
>            Assignee: Ken Zangelin
>              Labels: docker, docker-compose, docker-networking, fiware, fiware-orion
>
> Created question in FIWARE Q/A platform on 18-01-2023 at 14:01
> {color: red}Please, ANSWER this question AT{color} https://stackoverflow.com/questions/75160863/my-dockerized-service-doesnt-receive-the-notification-sent-by-orion-context-bro
> +Question:+
> My dockerized service doesn't receive the notification sent by Orion Context Broker
> +Description:+
> I don't understand why Orion says to successfully send TrafficFlowObserved entity update but my service (dockerized) receives nothing.
> I expect one of the following scenarios:
> Orion prints an error message if it fails to contact service, assuming the url is incorrect, or
> my service processes the request and prints the payload to the console.
> But neither of these two scenarios happens.
> Here's the log from Orion:
> 2023-01-18 14:16:50 time=Wednesday 18 Jan 13:16:50 2023.790Z | lvl=TMP | corr=N/A | trans=1674046401-299-00000017019 | from=pending | srv=pending | subsrv=pending | comp=Orion | op=httpRequestSend.cpp[564]:httpRequestSendWithCurl | msg=Sending message 16973 to HTTP server: sending message of 994 bytes to HTTP server
> 2023-01-18 14:16:50 time=Wednesday 18 Jan 13:16:50 2023.792Z | lvl=INFO | corr=N/A | trans=1674046401-299-00000017019 | from=pending | srv=pending | subsrv=pending | comp=Orion | op=httpRequestSend.cpp[587]:httpRequestSendWithCurl | msg=Notification Successfully Sent to http://smart-vertical:9090/subscription/traffic-flow/observation?subscriptionId=urn:ngsi-ld:Subscription:59c301f4-972f-11ed-809c-0242ac190006
> This is the code of resource in Quarkus that should receive the notification:
> @Path("/subscription/traffic-flow")
> public class TrafficFlowResource {
>     @POST
>     @Path("/observation")
>     @Consumes(MediaType.APPLICATION_JSON)
>     public void measurement(@QueryParam("subscriptionId") String id, Payload payload) {
>         logger.info(payload);
>     }
> }
> The Orion Context Broker subscription looks like following, but it's done programmatically:
> curl -L -X POST 'http://localhost:1026/ngsi-ld/v1/subscriptions/' \
>     -H 'Content-Type: application/ld+json' \
>     -H 'NGSILD-Tenant: openiot' \
>     --data-raw '{
>       "description": "Notify me of all traffic flow observation changes",
>       "type": "Subscription",
>       "entities": [{"type": "TrafficFlowObserved"}],
>       "watchedAttributes": [
>             "averageVehicleSpeed",
>             "intensity",
>             "occupancy",
>             "levelOfService",
>             "roadLoad",
>             "saturationFlow"
>       ],
>       "notification": {
>         "format": "keyValues",
>         "endpoint": {
>           "uri": "http://smart-vertical:9090/subscription/traffic-flow/observation",
>           "accept": "application/json"
>         }
>       },
>        "@context": "http://ld-context:80/ngsi-context.jsonld"
>     }'
> And this is the service configuration in docker:
> smart-vertical:
>     build:
>         context: ./smart-vertical
>         dockerfile: src/main/docker/Dockerfile.jvm
>     restart: on-failure
>     depends_on:
>       - orion
>     expose:
>       - "9090"
>     ports:
>       - "9090:9090"
>     environment:
>       - CB_HOST=orion
>       - CB_PORT=1026
>       - SMART_VERTICAL_PORT=9090
>       - SMART_VERTICAL_HOST=http://smart-vertical:9090/subscription
>       - NGSI_CONTEXT_URL=http://ld-context:80/ngsi-context.jsonld
> Orion and all services are on the same network created automatically by docker.
> I have a feeling it's an IP problem but without an error message I can't be sure.
> The tests I've done are to change the ip, so instead of using "smart-vertical" in docker-compose.yaml, I've tried "localhost", 172.30.0.8 (set by docker), 0.0.0.0 but the situation gets worse because I get the following results:
> 2023-01-18 14:55:44 time=Wednesday 18 Jan 13:55:44 2023.079Z | lvl=ERROR | corr=N/A | trans=1674050062-123-00000000379 | from=pending | srv=pending | subsrv=pending | comp=Orion | op=httpRequestSend.cpp[573]:httpRequestSendWithCurl | msg=curl_easy_perform failed: 7
> or
> 2023-01-18 15:07:43 time=Wednesday 18 Jan 14:07:43 2023.747Z | lvl=ERROR | corr=N/A | trans=1674050827-980-00000000194 | from=pending | srv=pending | subsrv=pending | comp=Orion | op=httpRequestSend.cpp[573]:httpRequestSendWithCurl | msg=curl_easy_perform failed: 28
> From the Orion implementation (github) I saw that:
> 7 stands for message size too large
> 28 should be 2+8?? where 2 stands for "Invalid IP" and 8 stands for "Unable to initialize libcurl (NOTE: only possible if actual curl is not provided as first argument)".
> Quarkus uses Vertx and by default Vertx uses its own DNS, could this be the problem? But I don't understand why with this setting
> SMART_VERTICAL_HOST=http://smart-vertical:9090/subscription
> I don't have IP problems but I still don't receive anything.



--
This message was sent by Atlassian JIRA
(v6.4.1#64016)


More information about the Backlogmanager mailing list

You can get more information about our cookies and privacy policies clicking on the following links: Privacy policy   Cookies policy