原文地址:
http://www.jssay.com/blog/index.php/2010/09/03/tibcorv入门实例/
Tibco RV(Rendezvous) 出来将近20年了, 但是在网上的中文资源还是少的可怜,可能是因为Tibco RV的使用成本太高,以至于很多中小型公司都放弃使用了.我也是最近才接触到一点TibcoRV的知识,希望我的一点总结能对大家有用.
Tibco RV是基于发布/订阅模式的,消息发送方被称为发布者(Publisher),消息接收方称为订阅者(Subscriber). 一个消息的生产者可以发布一条消息给多个消费者,通过一条叫做主题(Topic)的虚拟通道.消息消费者可以选择订阅他们感兴趣的主题(Topic), 任何关于此主题(Topic)的消息都会被发送到订阅此主题的订阅者那里. 下图简单描述了发布/订阅模式:
在了解了原理之后,我想通过代码来感受一下TibcoRv的神气力量, 下面定义了两个基本的类:TibSubScriber和TibPublisher,分别表示订阅者和发布者.
public class TibSubscriber implements TibrvMsgCallback {
private TibrvRvdTransport transport = null;
//初始化TibrvListener
public TibSubscriber() {
try {
Tibrv.open(Tibrv.IMPL_NATIVE);
transport = new TibrvRvdTransport(
ConfigUtil.getProperty(Constants.TIBCO_SERVICE),
ConfigUtil.getProperty(Constants.TIBCO_NETWORK),
ConfigUtil.getProperty(Constants.TIBCO_DAEMON));
new TibrvListener(Tibrv.defaultQueue(), this, transport, ConfigUtil.getProperty(Constants.TIBCO_SUBJECT), null);
} catch (TibrvException e) {
e.printStackTrace();
}
}
//监听
public void listen() {
while (true) {
try {
Tibrv.defaultQueue().dispatch();
}
catch(TibrvException ex) {
ex.printStackTrace();
}
catch(InterruptedException ex) {
ex.printStackTrace();
}
}
}
//回调方法,监听到指定Subject时触发
public void onMsg(TibrvListener listener, TibrvMsg msg) {
if (msg != null) {
String receivedMsg;
try {
receivedMsg = (String)msg.get("msg");
System.out.println(receivedMsg);
} catch (TibrvException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
TibSubscriber tibListener = new TibSubscriber();
tibListener.listen();
}
public class TibPublisher {
private TibrvRvdTransport transport = null;
public TibPublisher() {
try {
Tibrv.open(Tibrv.IMPL_NATIVE);
transport = new TibrvRvdTransport(
ConfigUtil.getProperty(Constants.TIBCO_SERVICE),
ConfigUtil.getProperty(Constants.TIBCO_NETWORK),
ConfigUtil.getProperty(Constants.TIBCO_DAEMON));
} catch (TibrvException e) {
e.printStackTrace();
}
}
public void publish(String sendMessage) {
try {
TibrvMsg msg = new TibrvMsg();
msg.setSendSubject(ConfigUtil.getProperty(Constants.TIBCO_SUBJECT));
msg.add(“msg”, sendMessage);
transport.send(msg);
} catch (TibrvException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
TibPublisher tibPublisher = new TibPublisher();
tibPublisher.publish(“Hello, World”);
}
运行时,先执行TibSubscriber的main方法开始监听Topic,然后执行TibPublisher的main方法开始发布消息, TibSubscriber监听到消息后,执行回调函数onMsg(). 打印结果如下:
Hello, World
这就是经典的Hello World入门例子(需要下载tibrvj.jar), 希望大家能够喜欢!
由于本人水平有限,错误再所难免,希望各位大虾批判指正.
原创文章,转载请著名出处!
相关文章:
TibcoRV vs Tibco EMS:
http://narencoolgeek.blogspot.com/2006/01/tibco-rv-vs-tibco-ems.html
TibcoRV vs SonicMQ:
http://www.cs.cmu.edu/~priya/WFoMT2002/Pang-Maheshwari.pdf
分享到:
相关推荐
Tibco rv sender && Receiver .net3.5 .net4.0
Python入门经典实例Python入门经典实例Python入门经典实例Python入门经典实例Python入门经典实例Python入门经典实例Python入门经典实例Python入门经典实例Python入门经典实例Python入门经典实例Python入门经典实例...
ansys入门实例 ansys入门实例 ansys入门实例
React 入门实例教程React 入门实例教程React 入门实例教程React 入门实例教程
json入门实例json入门实例json入门实例json入门实例
【源码】10 个 Python 爬虫入门实例【源码】10 个 Python 爬虫入门实例【源码】10 个 Python 爬虫入门实例【源码】10 个 Python 爬虫入门实例【源码】10 个 Python 爬虫入门实例【源码】10 个 Python 爬虫入门实例...
一个Spring的入门实例;一个Struts的入门实例:超初级,入门用的,高手莫看
ExtJs入门实例ExtJs入门实例ExtJs入门实例
Mybits入门实例(实例免费下载!)
helloworld入门实例helloworld入门实例helloworld入门实例
ROS 入门实例,Do it by yourself, 教程清晰,步骤详细
通过Eplan.EplApi.ApplicationFramework.IEplAddIn向EPLAN的菜单栏中加载菜单项,并连接到相应的IEplAction,本实例是一个简单的入门实例,通过在菜单栏中加载菜单项,并打开一个Form来演示如何嵌入自己写的程序。
qt 学习经典入门实例,学习嵌入式GUI
Spring MVC入门实例
MyBatis经典入门实例,适合新手学习用。
Java很诱人,但对于刚跨入Java门槛的初学者来说,编译并运行一个无比简单的Java程序简直就是一个恶梦。...笔者也经历过这个无比痛苦的阶段,本文以实例的方式,逐一解决在编译过程中所出现的各种设置问题。
AutoLisp入门实例视频教程
maven + springmvc 入门实例,安装好maven之后导入myeclipse即可运行。maven安装方法请自行百度
GEF入门实例代码2《Eclipse插件开发》中实例
MFC 基础 入门 实例 北京邮电大学 visual c++ mfc