Created On:  21 September 2010

Problem:

  • Product Name: Visibroker
  • Product Version: 7.0 and above
  • Product Component: VisiNotify
  • Platform/OS Version: all supported versions
  • JDK/Compiler Version: n.a.
How is clustering supported in VisiNotify?

Resolution:

The clustering in VisiNotify is supported with the help of Object Clusters. Check the VisiNotify Clustering deployment scenario below:



In the above diagram, ProxyConsumer objects of VisiNotify1 and VisiNotify2 are registered as object clusters in the Naming Service. Suppliers will resolve this object cluster and gets ProxyConsumer objects in a round-robin fashion. Fail-over is also achieved with this solution.

NOTE: Only Suppliers will be able to fail-over and Consumers will always connect to both VisiNotify Services, from point 4. The reason is the order of ProxySuppliers given to Consumers by Naming Service may be different than the order of ProxyConsumers to the suppliers.

Check the below scenario(1 supplier and 1 consumer):

  1. Supplier 1 gets VisiNotify1’s ProxyConsumer object and it pushes the events.
  2. Consumer 1 gets VisiNotify2’s ProxySupplier object and in this case, it will not receive any events.

A testcase(VisiNotify_Clustering_Test.zip) is also attached to the article.

Steps to run the testcase(ReadMe.txt in the testcase):

  1. Start Two Visinotify Services
    $ visinotify -Dvbroker.notify.enableEventQoS=true -Dvbroker.notify.channel.persistentEvent=true -Dvbroker.notify.listener.port=10001 -Dvbroker.notify.channel.iorFile=notify.ior -Dvbroker.log.enable=true
    $ visinotify -Dvbroker.notify.enableEventQoS=true -Dvbroker.notify.channel.persistentEvent=true -Dvbroker.notify.listener.port=10002 -Dvbroker.notify.channel.iorFile=notify2.ior -Dvbroker.log.enable=true
  2. Start Naming Service
    $ nameserv -config ns_implicit.prop -VBJprop vbroker.log.enable=true
  3. Start the ManageApp
    $ Server -DORBInitRef=NameService=corbaloc::localhost:60001/NameService -Dvbroker.agent.enableLocator=false -Dvbroker.log.enable=true
  4. Start the PushConsumer
    $ untypedPushConsumer 
  5. Start the PushSupplier
    $ untypedPushSupplier -DORBInitRef=NameService=corbaloc::localhost:60001/NameService -Dvbroker.orb.supplier.eventBatch=false

 
 
Note vbroker.orb.supplier.eventBatch property in the supplier script. This solution is supported only if batch event is disabled in the supplier.
The reason is the events are not pushed when batch event is enabled for this scenario. This will be fixed and released in later Service Packs/versions.
Incident #2420393