Friday, October 29, 2010

List of Tibco RV, EMS Tutorials , Tips from Javarevisited

Hi guys , just thought about some more topics to explain on this tibco tutorial series , let me know out of below which Tibco topics you would like to me cover first , please suggest if you have other topics in mind. I am now updating this post as most of the topics are already covered but I forgot to update this post.

I have covered difference between routing daemon and Tibco daemon in this part. basically main difference between both of them is the purpose. RVD is mainly for sending and receiving message in same network between two Tibco RV publisher and subscriber while RVRD is used to bridge two different network from two different countries, cities or even continent. Most of the investment banks has RVRD bridging there London to New-york traffic or London to Tokyo traffic. Bandwidth of these WAN networks are very important because if  you have just one slow Tibco subscriber that can bring down whole network link between two regions. We had an incident when one of out application is publishing huge amount of updates in MB and on other side we had a GUI on a slow desktop which is keep asking for resend, this problem is often referred as Tibco RV storm and its very serious issue while working with Tibco messaging. One important thing to note here is reliability parameter of tibco rv which actually defines how long publisher should hold the message if set very low can cause frequent retransmission request.

Friday, October 22, 2010

Tibco tutorial : Certified Messagging

This is in continuation of my previous tibco tutorial. tibco rv is most widely used middleware in enterprise world heavily used in banking and many global investment bank rely on tibco rv for there high speed messaging requirement. its used by many trading application to receive high speed data e.g. Market data. in reliable mode tibco provide reliable delivery of data but not guaranteed means if sender sends data to receiver via tibco multicast network , tibco tries best to deliver that data to receiver but there is no guarantee, data could be lost if receiver is too busy to receive it , if receiver is not running or receiver is hang. In some cases its possible to recover lost data by sending "Resend Request".

Resend Request is request which Receiver sends to Sender to resend lost data. if Sender has that data into memory it will resend but if it has already discarded then no way to recover that data and tibco will issue DATALOSS Advisory. Sender will only keep data defined in "reliability" parameter while starting tibco daemon and it normally ranges from 10-12 seconds.

Since reliable is good for high speed messaging where data becomes stale after few seconds and loss of some data didn't matter much e.g. in case of Market data where prices , quantity keeps changing.

But if you require guaranteed delivery where you don't want to lose any message you should consider option other that reliable messaging. tibco provides a solution for this called "Certified messaging".

In Certified messaging , delivery of data or message is guaranteed at tibco level and this is very useful for sending orders, executions , booking message etc where you can not afford to lose any message.

How does Certified messaging works ?
Certified messaging works on registration and acknowledgment principle. In this case we have Certified Sender and Certified Receiver , whenever Receiver comes up it registers with Sender by subscribe on a topic and providing its "name" , this name must be different in a single network for every certified sender or receiver.

For every message Sender waits for acknowledgment from receiver and it will only remove message once it gets acks from all Sender , if any of receiver doesn't sends ack it keep message in a ledger. ledger could be memory based (default) or file based. choosing ledger is critical because if you are keeping too many message you can easily ran out of memory in case of memory based ledger, you can use file based ledger in those cases.

Sender does have option to remove receiver from its list of certified listener , if receiver is not responding message for specified duration of time.

Preregistration can also be possible where Sender has list of certified listener , pre configured in its config file , so it will store message until those listener comes up and start consuming messages, this is useful if sender and receiver are in two different timezone e.g. US and Asia and comes up at different time.

in case of file based ledgers , there are chances of ledger corruption but tibco provides certain tools to check file ledgers , also if you have failover capability in your application you may want to keep this ledger in a shared location preferably in SAN disk , so in case of primary goes down Secondary can still access ledger file.

this is all about tibco certified messaging you can read more on documentation comes along with tibco installation.

let me know if you like these kind of "tibco tutorial" or any topic which you want me to cover , any feedback to improve tibco tutorial series

also any questions, queries , doubt is welcome I would be happy to answer them.

if you haven't read my previous tibco tutorials here is link

tibco tutorial part 1
tibco tutorial part 2
tibco tutorial part 3
tibco tutorial part 4


Related post:

Tuesday, October 12, 2010

What are builtin Properties in ANT >> Tutorial Example


This is the fourth article of series "ant tutorial for beginners" here I have included some more fundamental concept in form of Q/A to provide you clear and concise description and situation where you apply these concept. Please let me know if you have any questions , comments I will be happy to reply those .


What are built in properties available in ant ?
Built in properties are those which ant provides by default , you need not have to declare these property you can just use it. You can divide them in two parts

Sunday, October 10, 2010

Top 30 Eclipse Keyboard Shortcuts for Java Programmer



This tutorial is about 30 Eclipse keyboard shortcuts, this list is by no means complete and I will suggest you guys to share eclipse shortcuts listed other than here to make this more useful.Eclipse is most used Java development IDE and knowing Eclipse shortcuts not only improve your productivity but also makes you more efficient, you will have more time for things you like to do. Using keyboard shortcuts also helps to impress colleagues and shows that you have good hold on tools you used for Java Development.

Saturday, October 9, 2010

How to write build.xml and run build in Apache ANT

This is the second article on Apache ANT tutorials for beginners series As I have always said that I like short , clear and concise tutorial which tells about few concept but in a clear and concise manner and put weight on fundamentals . I try to adopt same theory while writing my blog post while writing my experience coupled with concept which is important for a software developer point of view.

Friday, October 8, 2010

Hot to build project using Apache ANT ? ANT Build Tutorials for Beginners

Apache Ant tutorials for beginners

Hi Guys, today I would like to share some of my experience while working with ant build tool in form of short ant tutorials, ant is one tool which has gained its place in almost everywhere, it’s integral part of any project’s build system and provide foundation for complex, extensible build environment. I have been using ANT from my early programming days and I have seen some of the best designed build environments around ANT. In these ant tutorials for beginners we will see what is ant build tool? How to use ANT for building project? Fundamentals of ANT build tool, setting up ant build environment etc. I have created a series of ant tutorials and you can check next part of ant tutorials by following links ant tutorial part 2 and ant tutorial part 3

Thursday, October 7, 2010

MySql Tutorial : mysqldump utility in mysql

The mysqldump client is a backup program o It can be used to dump a database or a collection of databases for backup or transfer to another SQL server (not necessarily a MySQL server). The dump typically contains SQL statements to create the table, populate it, or both. However, mysqldump can also be used to generate files in CSV, other delimited text, or XML format.

MySQL tutorial and commands part 3

Hi Guys , here are some more mysql commands which is useful in day 2 day work.

Method for converting current time stamp to date:
--------------------------------------------------------------
select from_unixtime(left(1201159475416, 10));
this  method is used to convert the timestamp to the date time format in mysql ,left() method will return 10 char from the specified string  if we store time stamp value in millisecond.

Wednesday, October 6, 2010

MySQL tutorial and commands part 2

Here are some more mysql commands from which is very useful for anyone working with mysql database.
this are very useful for application developer which is going to use mysql database for there applications.


Increasing no of connections for mysql
---------------------------------------------
You can increase this value in main config file (e.g., /etc/my.cnf) using this syntax:

[mysqld]
set-variable=max_connections=250

Tuesday, October 5, 2010

MySQL tutorial and commands Part 1

Here is first set of my basic mysql commands which I have used in my day to day life while working with mysql database.

For Checking Wheather MySQL Server is running or not
-------------------------------------------------------------
ps -auxwww | grep mysql


Starting mysql
-----------------------
go to mysql installation directory and execute below command

How to use Regular Expression in Unix Linux

One of the most powerful tools available to programmers are Regular Expressions, if you are good with regular expressions you can solve many day to day problem extremely quickly e.g. find all the lines with ERROR in log file , find count of any particular ID in log file , find exceptions etc.

regular expression is generic concept which has implemented on many different language and many different tools including Java , here is some of the tools and languages which use regular expression.

  • The vi editor which comes standard with the Unix/Linux operating system.
  • Any decent programmer's editor e.g. EditPlus
  • The grep command found standard on many operating systems including Unix/Linux
  • The Perl programming language.  
  • The PHP programming language. 

regular Even if you feel regular expression is complex and hard to learn I would suggest to familiarize with atleast basic set of regex and try to use it as much as possible and later you will only want to learn more and more to do the stuff quickly.

here are some of the basic regex and there examples:

1) you want to find ERROR in log file in linux ?    
grep ERROR logfile

2) you want to find lines starts with ERROR ?
grep ^ERROR logfile     (^ is used to find for startswith)

3) you want to find lines ends with ERROR ?
grep ERROR$ logfile     ($ is used to find for endswith)

4) you want to find empty lines in log file ?
grep ^$ logfile

5) you want to match upper or lower case ERROR ?
grep [Ee]RROR logfile               ([] is used to include letters]

6) find all lines that contains Error or Exception ?
egrep ERROR|Exception logfile   ( | is used for OR condition)

7) Match the letter E when it appears at least 3 times in a row but possibly 4 or more times in a row: E {3,} 

8) Match the letter E when it appears 3 times in a row or 6 times in a row or anything in between. E{3,6}

9)Match E when it appears 1 or more times in a row.
E+ 

10) (E+ and E{1,} mean exactly the same thing!)

Monday, October 4, 2010

Improving Performance of java application

This is a big topic to discuss as there are many approaches which involves to analyze peformance of an application starting from profiling application to finding bottleneck.

here I am putting some of the basic tricks for improving performance which I learnt in my early days in java , I will keep posted some approach , experience on performance improvement as and when time allows.

for now here are naive's tips for making your program run faster.

1. Use bit shift operator for multiplying and divide by 2 , computers are very fast with bitwise operation.

2. Use stringbuffer in place of string if you are doing lots of string manipulation it will reduce memory by avoiding creating lots of string garbage. If you are using java5 then consider stringbuilder but that is not synchronized so beware.

3. try to make variable , class , method final whenever possible that’s allow compiler to do lots of optimization e.g. compile time binding so you will get faster output.

4. static methods are binded compile time while non static methods are resolved at runtime based on object type so static method will be faster than non static.

5. don't call methods in for loop for checking condition e.g. length() size() etc.
instead of doing this , use modified version

for(int i=0; i<vector.size();i++)

int size = vector.size();
for(int i=0; i<size;i++) 


if you like to know about FIX protocol and its usage in Electronic trading or Derivatives trading e.g. Futures and options , foreign exchange and other asset class , Please see my FIX Protocol Tutorials series. I have shared my experience in investment banking and finance domain as form of short tutorial and could be used as start guide for any one new in FIX protocol and can compliment official FIX Protocol Technical specification in simple words.

If you are going for any FIX Protocol Job Interview you can quickly benefit from my FIX Protocol Interview Questions, those are questions mostly asked in Interview for a FIX developer position. It not just help in as quick reference for Interview but also opens new area of learning for new comers.

hope this would be useful.

Networking Basics for FIX Connection in Unix Linux

Knowledge of networking basics are extremely important if you are dealing with FIX connection , FIX stands for Financial Information Exchange protocol and its the most popular protocol for electronic trading and supported by many brokers , exchanges etc.

here I am discussing few important network related information which is quite useful for FIX connection establishment.

VPN (Virtual Private Network)

------------------------------
VPN uses a technique known as tunneling to transfer data securely on the Internet to a remote server on your workplace network. Using a VPN helps you save money by using the public Internet instead of using costlier leased lines. VPN provides security at network layer unlike HTTPS which provide security at application layer.
most of clients and broker used VPN to connect there FIX Engines and allow trading.

before setup of VPN some contracts needs to be sorted out by both party
e.g.
1) Encryption key
2) Protocol used
3) VPN Connector IP

once your VPN connection got setup you can connect to your brokers trading system on there respective IP/Port.


DMZ (Demilitarized Zone)
--------------------------------
Its host on any network which is used to connect Corporate network to public network e.g. external exchange connection.
Firewall rules are relaxed for this zone , also if security of DMZ is compromised then also intruder won’t get access to corporate network.

Normally client connection or exchange/broker connection originates and terminates in DMZ.

hope this would be useful.

Sunday, October 3, 2010

How to avoid deadlock in Java Threads

How to avoid deadlock in Java is one of the question which is flavor of the season for multithreading , asked more at a senior level and with lots of follow up questions , though question looks very basic but most of developer get stuck once you start going deep.

questions starts with "What is deadlock ?"
answer is simple , when two or more threads waiting for each other to release lock and get stuck for infinite time , situation is called deadlock . it will only happen in case of multitasking.

How do you detect deadlock in Java ?
though this could have many answers , my version is first I would look the code if I see nested synchronized block or calling one synchronized method from other or trying to get lock on different object then there is good chance of deadlock if developer is not very careful.

other way is to find it when you actually get locked while running the application , try to take thread dump , in Linux you can do this by command "kill -3" , this will print status of all the thread in application log file and you can see which thread is locked on which object.

other way is to use jconsole , jconsole will show you exactly which threads are get locked and on which object.

once you answer this , they may ask you to write code which will result in deadlock ?
here is one of my version

public void method1(){
synchronized(String.class){
System.out.println("Aquired lock on String.class object");

synchronized (Integer.class) {
System.out.println("Aquired lock on Integer.class object");
}
}
}

public void method2(){
synchronized(Integer.class){
System.out.println("Aquired lock on Integer.class object");

synchronized (String.class) {
System.out.println("Aquired lock on String.class object");
}
}
}


If method1() and method2() both will be called by two or many threads , there is a good chance of deadlock because if thead 1 aquires lock on Sting object while executing method1() and thread 2 acquires lock on Integer object while executing method2() both will be waiting for each other to release lock on Integer and String to proceed further which will never happen.

now interviewer comes to final part , one of the most important in my view , How to fix deadlock ? or How to avoid deadlock in Java ?

if you have looked above code carefully you may have figured out that real reason for deadlock is not multiple threads but the way they access lock , if you provide an ordered access then problem will be resolved , here is
the fixed version.





public void method1(){
synchronized(Integer.class){
System.out.println("Aquired lock on Integer.class object");

synchronized (String.class) {
System.out.println("Aquired lock on String.class object");
}
}
}

public void method2(){
synchronized(Integer.class){
System.out.println("Aquired lock on Integer.class object");

synchronized (String.class) {
System.out.println("Aquired lock on String.class object");
}
}
}


 

Now there would not be any deadlock because both method is accessing lock on Integer and String object in same order . so if thread A acquires lock on Integer object , thread B will not proceed until thread A releases Integer lock , same way thread A will not be blocked even if thread B holds String lock because now thread B will not expect thread A to release Integer lock to proceed further.

hope this would be useful.


Related Java Multi-threading Post:

Top 10 Most useful cvs commands in linux/unix

This article is in continuation of my earlier article Top 10 basic networking Commands in Unix  and 10 tips of working fast in unix  to read more see here 10 tips of using find command in linux.


Here is my list of most useful commands in Linux , its important that we know this and use it regularly while working with files folders which is in CVS.


Checking out code
cvs co –A folder or filename ( -A means head , this will checkout from head)
cvs co -rtag1 folder or filename (-r means tag or branch, this will checkout from tag "tag1")
cvs co -rbranch1 folder of filename ( checking out from cvs branch)

Adding new file in CVS
CVS add filename (adss  file provided by filename into CVS)
Cvs commit –m “subject” filename (commit recently added or already added file into CVS)


Updating file from CVS
Cvs update filename (update file name from where it has downloaded e.g. head or branch)
cvs update -A filename ( update file from head)
cvs update -A test.java (update file test.java from head)


Checking status of file
cvs status filename (shows status of filename from where it has downloaded etc)
cvs status test.java (shows cvs status of file test.java)

Review a file's history tags
cvs log test.java | less  (This is most useful cvs command it helps to find out all the tag and cvs          branches a file has present)

CVS Help
cvs –help  (Important to know this command provides all information related to cvs commands)

Difference between two CVS tags
cvs diff -rtag1 -rtag2 
(Shows difference between two CVS tags tag1 and tag2 for a particular CVS module , you can run this command by going into that module or from CVS root directory by providing module name e.g. cvs diff –rtag1 –rtag2 project/currentproject )

I hope this short tutorial and list of cvs commands will be useful for you guys. This list is by no means complete so please share how are you using cvs in unix or Linux.

If you are using MySQL as your database you may find my MySQL command tutorial series useful.

Top 10 basic networking commands in linux/unix


Networking is an essential part Unix and it offer lots of tools and command to diagnose any networking problem. When I was working on FIX Protocol we get lot of support queries to see whether FIX Sessions are connected or not. Since FIX Protocol uses sockets you can use net stat , telnet and other networking command available in Linux for finding problem and solve that.In this article I will show you basic networking commands in Unix and for what purpose they are used. with the combination of grep and find command on them you can troubleshoot most of networking problem.

Saturday, October 2, 2010

Tibco tutorial : Tibco RV tips and commands

This is third post on series of "tibco tutorial" , In this article I am posting some of the most useful command which I used while working in tibco rv in many application , they are extremely useful and must be in developers top of head who is working in tibco rv.

Before writing these "tibco tutorial" series I looked for some introductory simple tibco tutorial which explaines concept of tibco rv in simple word and give us working knowledge of tibco but I did not found any. tibco is most heavily used middleware solution on enterprise world and form backbone of many large enterprise including global banks.

these are few tips/commands/concept which essential while working with tibco rv  for resolving day to day problems or issues.

How to send message from command prompt using tibrvsend ?
tibrvsend -network "190.231.54.20" -service "5420" -daemon "tcp:7500" "TESTING”



How to receive message in command prompt using tibrvlisten ?
tibrvlisten -network "190.231.54.20" -service "5420" -daemon "tcp:7500" 


How do you identify whether tibco rv  is running in your host or not ?
ps –ef | grep rvd (in linux) , for windows check rvd in task manager. ,if tibco rv is running then rvd must be a live process.


How do you identify which services are subscribed from localhost ?
netstat –g

How do you identify which services and clients are connected to your host via tibco rv ?
We can use tibco rv  admin webpage , which listens on some predefined port e.g. 7542 http://host:7540 and then we can get all the details


Can we specify which NIC card to use while specifying network parameter
Yes , we can specify e.g. eth1;190.230.54.80 , if don’t give any NIC card name then it will bind to default eth0 card.


What will happen if same service e.g. 5480 tries to register with two network e.g. 190.230 and 192.230 ?
Tibco RV  will not allow that , it will throw exception while creating transport you can see that exception in tibco rv log via webpage.


What is the standard location for applications using TIBCO RV (Rendezvous)?
The latest TIBCO RV libraries will always be available through the following location:
• /opt/tibops/rv/lib
Previous versions of the libraries can be access through:
• /opt/tibops/RV//lib


How to change reliablity parameter ?

This is a startup parameter , you can see it by greping in ps –ef | grep rvd, for chaning it you need to disconnect all the application connected to that RVD and restart that



if you have not read my previous "tibco tutorial" series , here are  links

tibco tutorial part 1
tibco tutorial part 2
tibco tutorial part 3
tibco tutorial part 4








Please provide your feedback on these tibco tutorial , whether you are liking it or not , how can we improve it, what sort of information you are looking for.



Please post any question , doubt related to tibco rv in comment and I will try my best to answer those.



to understand more about tibco rv or tibco ems  see my tibco tutorial series

Tibco Tutorial: Fundamentals of Tibco RV messagging.

This is in continuation of my  tibco tutorial series where I will discuss tibco rv on application developer point of view as middle ware or messaging solution.

As discussed in earlier tibco tutorials, tibco is used for communicating between two systems e.g. client and server or server to server , here we will see some of the basic terms used in tibco rv  world.b

Main purpose of these tibco tutorials is to give overview of fundamentals of tibco rv with day to day examples and discuss its usage. I have been using tibco for more than 3 years and have used in my various project where I use tibco reliable messagging , tibco certified messagging for both client to server and server to server communication.

"tibrvsend" and "tibrvlisten" these are two utility comes with every tibco installation. One can used to send message on any multicast network while other can be used to receive message on any multicast network.

Here is an example of sending and receiving message in tibco multicast network.

tibrvsend -network "190.231.54.20" -service "5420" -daemon "tcp:7500" "TESTING”

tibrvlisten -network "190.231.54.20" -service "5420" -daemon "tcp:7500"



So here we see three new things network, service and daemon

Network
------------
This is the multicast network on which message will travel here it is "190.231.54.20"
It could be any IP  address which is setup on your network router. If your computer has multiple NIC (network interface card) then eth0 or eth1 could be prefixed in network e.g.'
"eth0; 190.231.54.20"

normally different NIC card is used for different network speed e.g. eth0 could be a Gigabyte network or eth1 could be for Megabyte network.


Service
----------
This is the UDP port on which tibco rv sends message, its advised to keep last two digit of network as service e.g. here 54.20 is used as service "5420".
important point to note is "one service can be bound to only one network in one machine" e.g. here service "5420" is bound to network "190.231.54.20" if you try to bound it to another network "192.231.54.20" , tibco will throw error "Transport initialization failed".
This problem generally occurs when you are subscribing many networks in one machine.

Daemon
------------
This is the tcp port on which application communicates to rvd (rendezvous daemon), by convention its tcp:7500 but it could be anything as long as it’s not conflicting with others.

there is one more concept called "remote daemon" where tibco used daemon of different machine to communicate with multicast network it looks like "host:7500" where host is remote host , its not advised to used remote daemon , I will discuss this on a separate post.

rvd
------
I have referred it many times but not yet explained, it’s a program we called rendezvous daemon which is required for tibco messaging, if it’s not running on your machine you can not send/receive message in a multicast network. if its not running then application generally starts it but its a good practice to start rvd in permanent account. It is this process will handle everything from sending message to receiving message in tibco multicast network.

remote daemon
------------------
Some time instead of using local daemon ( rvd installed on local computer) we use RVD (Randezeous daemon)  installed on some other remote host . this is called using remote daemon. so that remote daemon connects to our process via TCP and connect to tibco multicast network via UDP. see here how to use remote daemon.

C:\>tibrvlisten -service "5420" -network ";190.231.54.20" -daemon "tcp:remotehost:7500"  TEST.REPLY

here we are connecting RVD (Randezeous daemon)  running on host "remotehost"

this technique is useful if you don't have RVD (Randezeous daemon) installed in your host or your process is running on some virtual host which is not ideal for tibco installation.

reliable communication
----------------------------
reliable communication is what Tibco RV by defaults provide where RVD makes every effort to deliver the message to Receiver but delivery is not guaranteed, this is useful in case of high speed messaging where data becomes stale after few seconds and missing data can be tolerable .  for guaranteed deliver Tibco provides Certified Messagging.

Hope this would be helpful.

If you have not read my other blogs on my "tibco tutorial"  series here are the links :

tibco tutorial part 1
tibco tutorial part 2
tibco tutorial part 3
tibco tutorial part 4


Please let me know if you like this kind of tibco tutorial , if you have any doubt , questions related to tibco rv please post those as comment and i will try my best to answer those .

If you would like to discuss any tibco topic , Please suggest I would be happy to write tibco tutorial on those.

to learn more about tibco rv or tibco ems  see my tibco tutorial series



Related post:

TIBCO Tutorial : TIBCO Rendezvous or TIBCO RV messaging

TIBCO Tutorial:  TIBCO RV messaging
When I started working with a big investment bank I come across a new messaging technology called TIBCO Rendezvous or commonly called as TIBCO RV, I have heard Java Messaging Service (JMS) before but never heard about this TIBCO Rendezvous and it was so extensively used in my application that most of support issue was caused by this mysterious TIBCO RV. We had several TIBCO Topics also called TIBCO Subject separate for both Production and Non PRODUCTION environment but still since I don’t had basic knowledge of this technology I was afraid to do some experiment because there was always a risk to affect production environment.
At that time I have searched for TIBCO tutorial and I didn't find anything which can help an application developer who wants to use TIBCO as middleware solution, so I decided to write my own experience in a form of short , concise and clear  TIBCO tutorial  Every post of this series will have something to offer in a short and clear format which I like and I hope you too for details you can always refer to TIBCO Rendezvous or TIBCO EMS specification or documentation .

Today I am going to share some of my experience while working with TIBCO RV , this is standard product used in most of the global banks for messaging, its great product which offers following benefits:
  • ·          location transparency
  • ·          platform independence
  • ·          reliable and fast
  • ·          comprehensive API
  • ·          Point to point delivery and publish/subscribe delivery.
Location transparency
Location transparency means for sending and receiving message on a multicast network you need not to aware of physical location of sender or receiver as long as you know the topic (also called subject in TIBCO world), so its pretty simple Sender publish message on multicast topic in a network and all subscriber which have subscribed on that topic receives message without being knowing physical location of publisher.

Sender could be anywhere in the world e.g. New York, Tokyo, London, receiver can be anywhere e.g. London, Hong Kong or Tokyo.



Platform independence
TIBCO Rendezvous or TIBCO RV doesn't depend on platform, Sender can be running on UNIX box while receiver could be running on windows machine. Most of the time GUI runs on windows and server runs on Linux and they exchange messages via TIBCO.


Reliable and Fast
TIBCO Rendezvous or TIBCO RV makes best effort but not guaranteed to deliver message to receiver and it’s very fast since it’s operate on User Datagram Protocol (UDP) also.  TIBCO RV is best suited for transmitting data which is going to be stale in few minutes and has very high volume e.g. Market data etc but not used for sending Order or execution message because there is always chance of loosing those messages which could create financial impact.
TIBCO Rendezvous provides another solution for guaranteed message delivery known as TIBCO Certified messaging so normally application uses certified messaging to make guaranteed delivery sensitive data e.g. Order, Trade or Booking messages.


Comprehensive API
TIBCO Rendezvous or TIBCO RV comes along with rich API in both C++ and Java languages and can be plugged into application easily, TIBCO RV API provides interfaces and classes for different modes of communication e.g. Point to Point, publish/subscribe, certified messaging etc.

Point to Point Delivery
TIBCO Rendezvous or TIBCO RV  can be used for point-2-point delivery (some times also called Request/Reply mode), it used "INBOX" topic for doing so , when rvd (rendezvous daemon) sees INBOX topic instead of publishing that message into multicast network it makes direct connection to destination host and send that  message over TCP/IP.

Publish/Subscribe
TIBCO Rendezvous or TIBCO RV provides essential messaging functionality e.g. both Point to Point also called P2P and publish/subscribe. In PUBLISH/SUBSCRIBE mode there could be one sender and multiple receiver which subscribe on a TIBCO Topic also called as Subject. TIBCO RV receiver subscribes on multicast network on a particular topic and Sender sends message on that Topic, after that its TIBCO RVD responsibility to deliver those message. Communication between application process and TIBCO RVD is happens on TCP while communication between TIBCO RVD and multicast network happens on UDP protocol and that’s why TIBCO Rendezvous messaging or TIBCO RV is very fast.

Hope this would be useful, I will write some more post to explain things little more till then happy learning :)

As promised here are links for my other "TIBCO tutorial" articles

TIBCO tutorial part 1
TIBCO tutorial part 2
TIBCO tutorial part 3
TIBCO tutorial part 4

Please let me know if you have any doubt or question related to TIBCO or do you want me to cover any specific topic on TIBCO.

To read more about TIBCO RV or TIBCO EMS see my TIBCO tutorial series



Related post: