tibcorv入门实例 
原文地址: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

tibcorv入门实例相关推荐

  1. Asp.Net MVC2.0 Url 路由入门---实例篇

    本篇主要讲述Routing组件的作用,以及举几个实例来学习Asp.Net MVC2.0 Url路由技术. 接着上一篇开始讲,我们在Global.asax中注册一条路由后,我们的请求是怎么转到相应的Vi ...

  2. SpringMVC 框架系列之初识与入门实例

    微信公众号:compassblog 欢迎关注.转发,互相学习,共同进步! 有任何问题,请后台留言联系! 1.SpringMVC 概述 (1).什么是 MVC:Model-View-Control Co ...

  3. 《HFSS电磁仿真设计从入门到精通》一第2章 入门实例——T形波导的内场分析和优化设计...

    本节书摘来自异步社区<HFSS电磁仿真设计从入门到精通>一书中的第2章,作者 易迪拓培训 , 李明洋 , 刘敏,更多章节内容可以访问云栖社区"异步社区"公众号查看 第2 ...

  4. python爬虫实例-10个python爬虫入门实例

    昨天带伙伴萌学习python爬虫,准备了几个简单的入门实例 涉及主要知识点: web是如何交互的 requests库的get.post函数的应用 response对象的相关函数,属性 python文件 ...

  5. python爬虫程序实例-10个python爬虫入门实例

    作者:h3zh1 来源:cnblogs.com/h3zh1/p/12548946.html 今天为大家准备了几个简单的python爬虫入门实例,分享给大家. 涉及主要知识点:web是如何交互的 req ...

  6. ADO.NET Entity Data Model入门实例

    ADO.NET Entity Data Model入门实例 快速开发一个网站,最繁琐的地方可能要算数据库访问和ORM了,还好.net中这个很强大,可以省去好多体力劳动. 这里就给个快速使用ADO.NE ...

  7. Java Socket入门实例

    基于测试驱动的Socket入门实例(代码的具体功能可以看我的程序中的注释,不理解的可以短信我) 先看Server的代码: package socketStudy; import java.io.Buf ...

  8. linux Shell(脚本)编程入门实例讲解详解

    linux Shell(脚本)编程入门实例讲解详解 为什么要进行shell编程 在Linux系统中,虽然有各种各样的图形化接口工具,但是sell仍然是一个非常灵活的工具.Shell不仅仅是命令的收集, ...

  9. Activiti工作流从入门到入土:入门实例

    一.前言 在上一节中我们对activiti进行了基本的介绍activiti进行了基本的介绍,同时介绍了基本的概念. 这一节,我将用一个入门程序,介绍如何使用activiti. 二.环境准备 2.1.编 ...

  10. Spring-MVC入门(一):入门实例

    引言 1.MVC :Model-View-Control 框架性质的C 层要完成的主要工作:封装web 请求为一个数据对象.调用业务逻辑层来处理数据对象.返回处理数据结果及相应的视图给用户. 2. 简 ...

最新文章

  1. Linux下高并发socket最大连接数所受的各种限制
  2. 程序员又背锅?美团外卖声明“杀熟会员”是技术原因,软件定位缓存导致配送费不准!网友:程序员太惨!...
  3. access 更新整列数据_在access中同一列的多个数据一次更新
  4. mongo基本使用方法
  5. AcWing 1055. 股票买卖 II
  6. Python3 实现来宾抽签
  7. app登录界面背景 css_Google flutter这么火?撸一个APP登录界面(上)
  8. docker容器跨宿主机通信
  9. element-ui在打开两个对话框时出现阴影的解决办法
  10. 10x 程序员工作法 - 划重点 | “自动化”主题的重点内容回顾汇总
  11. python wow自动打怪脚本官方教程_【按键精灵】魔兽世界LR 自动打怪脚本
  12. python爬虫:获取菜鸟网站上url
  13. 评估指标——均方误差(MSE)、平均绝对误差(MAE)
  14. Win系统EPUB阅读软件评测
  15. 【机器学习】关联规则挖掘算法 + 三大案例实战 + Apriori算法 + Python代码实现
  16. 基于工业路由器的智慧医疗远程监控系统
  17. unity-动画状态机Animator
  18. 企业IT管理员IE11升级指南【17】—— F12 开发者工具
  19. hive on spark 线上问题排查案例分享
  20. mysql 分页面试题_MySQL常见面试题

热门文章

  1. 安天移动安全:重视用户个人信息保护,是App长效发展的关键
  2. linux设置开机自启动命令
  3. Celery 立即执行任务 延迟执行任务
  4. electron-mac应用-代码签名及公证(教科书式操作-亲测有效)
  5. python中根据视频帧生成视频,保存为mp4格式
  6. 使用python切分mp4视频并保存每帧图像
  7. 中职学校计算机大赛方案,中等职业学校电子技能赛的活动策划方案参考
  8. 《非线性成长》阅读笔记
  9. 2012年8月 至 2014年2月1日读书列表
  10. Web2.0是什么:下一代软件的业务模式与设计模式