I am having trouble getting a subscriber to receive data from a publisher. Both entities are on the same machine and my firewall is off.
* Subscriber has a listener with StatusMask as all().
* set NDDS_DISCOVERY_PEERS=4@shmem://
* Using HighThroughput profile.
I guess the more unusual thing about this app is that there are two domain participants with a pub on one and a subscriber on the other. Yet, they are both on the same domain's id, 0. I assume that's ok.
Admin Console reports entities as "Healthy" and I can see the DW's pointing to a topic and the DR's receiving from a topic.
When selecting any of the entities in the Monitor, the "Common Information" box says "not available" and no data is reported within the Monitor.
When starting my peers, the only functions I see being called in my Listener is:
on_subscription_matched
on_liveliness_changed
Then I manually publish a message, I see the writer being called, but no reader action of any kind.
Any ideas as to why when pushlishing a message, nothing is received?
There are a lot of possibilities here, but given that it looks like the applications are discovering each other, some of the more likely options are:
- A mismatch between the QoS and data size, such as sending large data samples using best effort QoS. Is the data type large?
- Filtering on the reader side. Are you using a content filtered topic?
- An application code bug that is obscuring the cause.
Do you get a different behavior when you do not specify NDDS_DISCOVERY_PEERS? Are you able to subscribe to the topic in Admin Console and receive the data?
It is fine to have multiple participants in the same application on the same domain, but it is also inefficient because participants are heavyweight objects.
Note that the HighThroughput profile enables batching, so that could also come into play. Are you getting any error messages from the publishing application?
Ok, interesting. I changed out the profile for a simpler one (from the getting_started/4_keys/instances/c++11) and it worked. I guess batching doesn't work as I was thinking.
Thanks for this.