Hello,
The platform I am working with is a on premise installation and the productive environment is clustered: we have two front-end servers and one load balancer. I can use the SSE extension perfectly while in Dev/Test but in Production it only works if both the Broadcast and the Listener are on the same server.
For example, in the following case the message from SI0VM05 did no reach the listener on FE0VM05 and vice-versa.
Any thoughts on how I can fix this and use the SSE Broadcast on this clustered environment?
Regards,
Juliano
Hi Juliano,
As stated in the "Current Issues" section at the Docs - https://www.outsystems.com/forge/component-documentation/10975/sse-push-event-hub/0, the Hub does not support multiple front-ends out of the box.
There is however a simple idea, un-tested. With the example apps of the SSE Hub, there's a POC for multiple front ends. You can find the high level view diagram of what to do at the end of the Docs.
Hello Nuno,
Thank you very much for the fast reply. I will take a look into it.
Sorry for the poor reading, I focused on the overview and missed the Documentation.
Hi @Juliano Prisco dos Santos and @Nuno Damaso
Sorry to reopen this old post but I just wondering if you had any luck in configuring this in Production.
I am trying now (same situation where it works brilliantly in dev and test) but I am struggling a bit to configure it. I can't find the Get_HostName action (I have included Text, HTTPRequestHandler, and the Server table as dependencies).
Hi Andrea, sorry for the late response.
For some reason the demo app for the SSE HUB did not publish with the POC for multiple frontends.
I will need some time to publish a new version with the demo or even share the oap here, maybe this weekend.
Thank you so much @Nuno Damaso ,
I have downloaded the SSE Puch Event Hub -Demo and opened the MultipleFrontEnds_Hub_WorkInProgres module and I was able to replicate this in my production environment and it seems to work.
Will something change when you publish the new version? Monday I am going live with an application using this and I would like to avoid surprises :)
Not at all, I won't change anything on the component itself. I might improve the Multiple Frontends Demo and wrap it.
I was also finally able to run some tests on a clustered environment, and the concept apparently works perfectly fine. I will run some more exhaustive tests later this month.
Please do properly test your application before going live on your clustered environment :)
Thanks
Sorry to bother you again, but how do you pass more than one parameter in Arguments of the CallBroadcastRepeater function?
In the tooltip you divide the two parameter by the new paragraph character (pilcrow) but I don't know how to add it in the expression editor.
I have tried:
"Message=" + Message + NewLine() + "Event=" + Event
"Message=" + Message +"Event=" + Event
"Message=" + Message + "&Event=" + Event
Hey Andrea, I'm sorry I somehow missed your last question.
This works perfectly fine for me:
"Message=Test1&Event=Test2" - your last example.
Hi Nuno,I tried the above mentioned solution, but it seems we are not allowed to use the server IP or server name for calling the /MultipleFrontEnds_Hub/rest/BroadcastRepeater/Repeat API.
I think the IP/ server name is not exposed to external world directly.
Can you please suggest what can be done in this scenario?Without appending the firewall setting.
Hi Manish,
The repeater request must be an internal, server to server call, otherwise it would hit the load balancer again. It should not leave the internal network. For that to happen, the servers must be able to call each other internally.
This is exploratory stuff and not directly supported by the component as stated in the docs and component.
I have made a couple of successful tests, but this remains to be further tested on different scenarios - setting internal coms only, http only/https, on-premises vs cloud etc. I don't know when will I be able to do so, so this remains untested and unsupported.
HI Nuno,
Can you please help me and suggest how we can call the Broadcast api using the server IP.Which all configuration is required to be done.
Here's what I have been able to successfully test, picking up from the Demo:
- OSCloud environment (not on-prems)
- Have the Broadcast Repeater Rest API set to Internal Access Only
- Set the Broadcast Repeater Rest API HTTP Security to None
The endpoint as in the Demo is just: "http://" + GetServers.List.Current.Server.Ip_Address + "/MultipleFrontEnds_Hub/rest/BroadcastRepeater/Repeat"
I have trialed and it still got "The remote server returned an error: (403) Forbidden." with this config as image below
Hi Phongsakorn,
Are you on-prems or cloud?
Hi Nuno,
On the cloud, and still get problems I didn't know how to archive this way. And my code is...
Broadcast;
Repeater;
Broadcast service;