How to share query table contents across nodes with transactional memory

How to share query table contents across nodes with transactional memory

book

Article ID: KB0079592

calendar_today

Updated On:

Products Versions
TIBCO Streaming 10.4 and later

Description

I want to run the same application fragment in different nodes, and have each node share the same query table contents.  How can this be accomplished?

Issue/Introduction

How to share query table contents across nodes with transactional memory.

Resolution

This can be done by setting the query table's persistence Type to 'In Transactional Memory' in the 'Table Settings' properties tab.  This option is detailed in the Help under TIBCO Streaming > Authoring Guide > Using Query Tables > Using the Query Table Data Construct > (sub-heading) Properties: Table Settings Tab:

https://docs.tibco.com/pub/str/10.4.0/doc/html/authoring/querytable.html

In addition, go to the 'Data Distribution' tab and select 'Distribute Data' and use our default Policy Name (default-dynamic-data-distribution-policy).

Once the table is configured for transactional memory, add a node configuration file to specify the different nodes that you want to run.  For example..
 
 name = "sample-NodeDeploy-document" type = "com.tibco.ep.dtm.configuration.node" version = "1.0.0" configuration = { 	NodeDeploy = {     nodes = {       "A.sbuser" =         {           }       "B.sbuser" =         {         }     }   } }

The attached project set provides this node configuration file in the SB application project (named 'deployApp').  The deployApp archive can then be built in Studio by right-clicking on the project folder in the Project Explorer, and selecting "StreamBase > Create Application Archive".

Once the deployApp is built, both nodes can be run in Studio by creating separate launch configurations for each node.  Go to Run > Run Configurations > StreamBase Application.  Then select the StreamBase Application Archive from the deployApp project's 'target' directory on the 'Main' tab:

User-added image

In the 'Node' tab, specify which node will be launched:

User-added image

In the 'Parameters' tab, set the 'SB_PORT' value.  This value needs to be different for each node, and is set in the deployApp's listener.conf file under src/main/configurations:

User-added image

Once both nodes have been launched, the contents of the query table will be shared between each node.  This can be confirmed by entering tuples in the ReadIn and WriteIn input streams in the Manual Input view.

Attachments

How to share query table contents across nodes with transactional memory get_app