Tibco RV send and listen parameters confused

user1086579 picture user1086579 · Dec 7, 2011 · Viewed 13.9k times · Source

Hi I am new to Tibco RV. After reading the Tibco Rendezvous Concept, I am still confused about the transport parameters: service, network, daemon.

So conceptually there is only one daemon running on each machine. So when using tibrvsend:

tibrvsend -service 2323 -network "someIPAddress" -daemon "myDaemon" MESSAGE

Does it mean I am sending message using port 2323 on my localhost, through daemon myDaemon (which could be on remote), to network comeIPAddress?

When using tibrvlisten:

tibrvListen -service 2323 -network "someIPAddress" -daemon "myDaemon"

Does it mean I am listening using any available port, any available daemon on my localhost, to listen the messages from port 2323 of myDaemon" that published to someIPAddress network?

Another question is, the book "Tibco RV Concept" mentioned that the same service cannot be bind to two networks. Does it only apply to producer machines (since we don't specify port for listener machine)? So an error will occur if we do:

tibrvsend -service 2323 -network "net1" MESSAGE

and

tibrvsend -service 2323 -network "net2" MESSAGE

at the same time (it should be OK if we do it consecutively, right?)

but for listeners:

tibrvlisten -service 2323 -network "net1"

and

tibrvlisten -service 2323 -network "net2"

should be perfectly fine? (otherwise it means producers need to know each others' port number in order to avoid conflict)

If I have totally messed up with the concepts, can you please explain with examples?

Answer

erikxiv picture erikxiv · Jan 9, 2012

So conceptually there is only one daemon running on each machine

You can have several daemons running on a single machine, but it isn't necessary. You can access several logical buses on a single daemon by varying the service and network parameters.

The daemon is the actual process running on your machine to handle Rendezvous messaging. Your clients will connect to this daemon using the daemon parameter. E.g. the default value tcp:7500 will access a daemon on the local machine on port 7500, whereas a value of tcp:server.domain.com:8000 will access a daemon on a remote machine (server.domain.com) on port 8000.

Example: If you execute tibrvlisten -daemon tcp:8000 you will note that a new process is started on the machine (rvd.exe on Windows, rvd on Unix) listening to port 8000.

The service and network parameters in turn are multicast parameters (see http://en.wikipedia.org/wiki/Multicast). To simplify you can view these as rather abstract values, with two important facets:

  • Producer and consumer of messages should be configured to use the same network/service pair
  • You should not reuse service for several networks as this conflict will cause problems.

Another thing to keep in mind regarding Rendezvous is that multicast messages are received by all machines on the same subnet. If you need to send messages to other subnets, you should consider using Rendezvous Routing Daemons (RVRD).