`
jssay
  • 浏览: 27672 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

TibcoRV入门实例

    博客分类:
  • Java
阅读更多
原文地址: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
分享到:
评论
1 楼 u_lie 2013-02-01  
你好:
    以前没有用过RV,向你请教一下,使用您上面的例子怎么实现两台机器之间的通信,该如何配置?

请问
ConfigUtil.getProperty(Constants.TIBCO_SERVICE),
ConfigUtil.getProperty(Constants.TIBCO_NETWORK),
ConfigUtil.getProperty(Constants.TIBCO_DAEMON));
这三个参数 service、network、daemon具体是什么?帮忙解释下!谢谢!

相关推荐

    tibco rv 发送与接收Demo

    在IT行业中,Tibco RV(Rendezvous)是一种广泛使用的中间件技术,它提供了可靠的、基于主题的消息传递服务。Tibco RV的核心是它的发布/订阅模型,它允许应用程序通过共享主题进行通信,无需知道彼此的存在。在这个...

    React 入门实例教程

    React 入门实例教程React 入门实例教程React 入门实例教程React 入门实例教程

    ROS 入门实例 中文版

    ROS 入门实例,Do it by yourself, 教程清晰,步骤详细

    delphi入门实例100

    "delphi入门实例100"这个压缩包文件正好为初学者提供了一个绝佳的学习平台,通过一系列实例来快速掌握Delphi7的编程方式和基础控件的使用。 1. **面向对象编程**:Delphi7基于Object Pascal语言,它是面向对象的,...

    VB.NET入门实例教程

    VB.NET入门实例教程是一套专为初学者设计的编程学习资源,它涵盖了VB.NET的基础概念、语法和实际应用。这门教程通过各种小程序实例,帮助学习者快速掌握VB.NET编程的核心技能。 VB.NET,全称Visual Basic .NET,是...

    AutoLisp入门实例视频教程

    AutoLisp入门实例视频教程

    adams入门实例与讲解 第二版

    adams 入门与提高最推荐的书籍,有大量实例,适合初学者 。

    NASTRAN快速入门与实例

    李增刚的书 比较基础 也比较简单明了 对了解nastran卡片文件和格式有很大的帮助

    嵌入式MCGS串口通信快速入门及编程实例_第1章_MCGS简介.pdf

    嵌入式MCGS串口通信快速入门及编程实例_第1章_MCGS简介.pdf嵌入式MCGS串口通信快速入门及编程实例_第1章_MCGS简介.pdf嵌入式MCGS串口通信快速入门及编程实例_第1章_MCGS简介.pdf嵌入式MCGS串口通信快速入门及编程...

    使用Protege创建本体进行推理-入门实例

    在“使用Protege创建本体进行推理-入门实例”中,我们将探讨如何通过Protege 5.2构建一个简单的生物分类本体,并利用内置的HermiT推理机进行推理。 首先,我们需要理解本体的基本构成。在这个实例中,我们有两类...

    ObjectARX入门实例教程 官方原版

    ObjectARX是AutoDesk公司针对AutoCAD平台上的二次开发而推出的一个开发软件包,它提供了以C++为基础的面向对象的开发环境及应用程序接口,能真正快速的访问AutoCAD图形数据库。 与以往的 AutoCAD 二次开发工具 Auto...

    开关电源设计入门与实例解析 张占松.pdf

    开关电源设计入门与实例解析是一本面向初学者和行业工程师的实用工具书,旨在通过基础知识的讲解和具体实例的分析,帮助读者掌握开关电源设计的核心技术。 首先,我们需要理解开关电源的基本工作原理。开关电源的...

    MSC.PATRAN & MSC.NASTRAN入门和实例

    本书名为《MSC.PATRAN & MSC.NASTRAN入门和实例》,由周焕林、胡宗衬、胡龙飞编著,于2006年8月由合肥工业大学出版社出版。本书是关于MSC.Software公司旗下两款著名工程软件——MSC.PATRAN和MSC.NASTRAN的入门指南,...

    ISE10.1快速入门实例

    ISE 10.1 快速入门实例 ISE(Integrated Synthesis Environment)是一种综合电子设计自动化(EDA)工具,由Xilinx公司开发,主要用于数字电路设计和FPGA开发。下面是ISE 10.1快速入门实例中的知识点: 1. ISE 快速...

    TMS320C66x KeyStone架构多核DSP入门与实例精解.pdf

    TMS320C66x KeyStone架构多核DSP入门与实例精解.pdf牛金海

    C# MVC入门实例 MVC留言本

    **C# MVC 入门实例:MVC留言本** C# MVC(Model-View-Controller)框架是微软为构建Web应用程序提供的一种强大的设计模式。它将应用逻辑、用户界面和数据处理分离开来,使代码更易于管理和维护。在这个入门实例中,...

    adams入门详解与实例

    由于提供的文件信息部分存在重复内容以及与标题“ADAMS入门详解与实例”不相关的信息,我会忽略这部分重复及无关内容,并直接从给定的标题和描述中提取知识点。 ADAMS(Automatic Dynamic Analysis of Mechanical ...

    labview入门开发100实例及对应部分vi

    本资料“labview入门开发100实例及对应部分vi”旨在帮助初学者快速掌握LabVIEW的基本操作和编程技巧。 1. **图形化编程基础**:LabVIEW的核心是G语言,即图形化编程语言。通过拖拽函数节点和连线来构建程序,这种...

    C++Builder 实例入门

    C++Builder 实例入门 C++Builder 实例入门 C++Builder 实例入门

    Hibernate入门实例

    hibernate入门实例,内容是增加人员信息实例,手动配置相关配置文件、pojo类,测试数据。后台数据采用mysql数据库,有实体表创建语句,相关hibernate的jar包与数据库驱动包也上传了,可以直接使用,很方便!

Global site tag (gtag.js) - Google Analytics