Hi all,
Message Broker provides means to horizontally scale between nodes. The client which communicates with the broker is notified on the availability of the broker nodes in the cluster via JMS connection URL, which allows defining of a failover string (the list of IPs of the broker nodes separated by comma). Also, When integrating with other products (eg- ESB, DAS); we specify the list of nodes in JNDI.properties file in the following manner. connectionfactory.QueueConnectionFactory = amqp://admin:admin@clientID/carbon failover='roundrobin'&cyclecount='2'&brokerlist='tcp://IP1:5672 retries='5'&connectdelay='50';tcp://IP2:5672?retries='5'&connectdelay='50';tcp://IP3:5672?retries='5'&connectdelay='50'' Configurations to the JNDI.properties The above approach would require the user to manually list out IPs of the broker nodes to the client connection string or the application context, which in fact limits the user experience and achieving the scalability goals in the following way, 1. The user/developers having to manually list out the IPs in the connection URL could be prone to error. 2. The change of IPs of the broker nodes would require reconfiguring and restart the client applications connected to it. 3. The approach would also be a blocker for auto scaling between broker nodes. (Since addition of IPs needs to be manually reflected in the client application.The manual process would only address failover between broker nodes. This limits the client applications to load balance between the broker nodes) How existing system works Proposed solution - Specify an admin service inside the MB. where, the broker clients could query the service to get the list of IPs in the broker cluster. - Via calling an admin service which is implemented inside the MB; can discover available MB nodes in the cluster. - Periodically calling this service we can get the dynamically adding MB node IP addresses and can remove disconnected IP addresses from the list. So it will always shuffle the IPs and provide it for the client. - According to the live MB node IP address, I will create the connections and use this connection as round robin fashion or use disruptor for load balancing purpose. [image: pic 2] There are several ideas for doing this. 1. Build separate OSGI component 2. Modify the Andes client according to the above scenario. Any ideas? -- Thank You, Best Regards, Sidath Weerasinghe *Intern* *WSO2, Inc. * *lean . enterprise . middleware * *Mobile: +94719802550 <%2B94%20777764144>* *Email: *[email protected] <[email protected]>
_______________________________________________ Architecture mailing list [email protected] https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
