OK, my memory has been refreshed and I must apologize for giving you some incorrect intel Michael. Here's how it works. The query parameters on HTTP messages are handled by 2 different pieces of software, and the one that handles interactionID is unfortunately not in play for your use case.
First off, I also gave some misinformation regarding the "Is session affinity enabled?" cluster attribute. This setting doesn't impact whether the "affinity" query parameter is processed. The only thing that this impacts is whether the load balancer distributes messages using round robin or if it will do a hash of the client's IP address to determine which machine to target for a given request. If a large % of messages will be sent from a single IP address, you probably want this to be disabled.
The "affinity" query parameter is processed by the load balancer. It allows the client to target a specific machine in a cluster, and it must include an accurate IP address. The presence / absence of this query parameter doesn't impact whether "interactionID" is processed. Therefore, populating this parameter with a bogus IP address (as I suggested you do) would never make sense.
The "interactionID" query parameter is NOT processed by the load balaner. The only component that looks for this parameter is the Eventing Connector, which handles incoming events over HTTP and publishes them to the Eventing Framework. If this parameter is populated, The Eventing Connector invokes the same method you were using (getNodeThatHostsThisCall). If the call is hosted on a different node, it issues a 302 redirect to the invoker, instructing them to send the HTTP event directly to the correct node (bypassing the load balancer).
So, where does that leave you? Two options:
1. You can stick with your current method that we thought was a temporary workaround
2. You could move to using the Eventing Connector and Eventing Framework as opposed to handling the incoming HTTP directly
Option 1 is likely preferable for you since you have it (mostly) working.
Apologies once again. Sometimes the memory gets rusty...
|