1,什么是rv?

请查看本人的文章https://blog.csdn.net/qq_41886200/article/details/109180360

2,rv的安装

rv属于商业收费软件,这里就省略不说了,安装教程都在文档里

3,rv的消息监听

rv的callBack接口,就是实现监听的主要方式,实现TibrvMsgCallback,即可实现对某个广播段的监听

代码

package test;import java.util.*;import com.tibco.tibrv.*;public class RvlistenerDemo implements TibrvMsgCallback {String service = null;String network = null;String daemon = null;public RvlistenerDemo(String... args) {// parse arguments for possible optional// parameters. These must precede the subject// and message stringsargs = addServerName(args);int i = get_InitParams(args);// we must have at least one subjectif (i >= args.length)usage();// open Tibrv in native implementationtry {Tibrv.open(Tibrv.IMPL_NATIVE);} catch (TibrvException e) {System.err.println("Failed to open Tibrv in native implementation:");e.printStackTrace();System.exit(0);}// Create RVD transportTibrvTransport transport = null;try {transport = new TibrvRvdTransport(service, network, daemon);} catch (TibrvException e) {System.err.println("Failed to create TibrvRvdTransport:");e.printStackTrace();System.exit(0);}// Create listeners for specified subjectswhile (i < args.length) {// create listener using default queuetry {new TibrvListener(Tibrv.defaultQueue(),this, transport, args[i], null);System.err.println("Listening on: " + args[i]);} catch (TibrvException e) {System.err.println("Failed to create listener:");e.printStackTrace();System.exit(0);}i++;}// dispatch Tibrv eventswhile (true) {try {Tibrv.defaultQueue().dispatch();} catch (TibrvException e) {System.err.println("Exception dispatching default queue:");e.printStackTrace();System.exit(0);} catch (InterruptedException ie) {System.exit(0);}}}public void onMsg(TibrvListener listener, TibrvMsg msg) {System.out.println((new Date()).toString() +": subject=" + msg.getSendSubject() +", reply=" + msg.getReplySubject() +", message=" + msg.toString());System.out.flush();}// print usage information and quitvoid usage() {System.err.println("Usage: java tibrvlisten [-service service] [-network network]");System.err.println("            [-daemon daemon] <subject-list>");System.exit(-1);}/*** 添加命令参数** @param args* @return*/public String[] addServerName(String[] args) {List<String> stringList = new ArrayList<>();for (int i = 0; i < args.length; i++) {String serverName = "";if (i == 0) {serverName = "-service";} else if (i == 1) {serverName = "-network";} else if (i == 2) {serverName = "-daemon";}if (!serverName.equals("")) {stringList.add(serverName);}stringList.add(args[i]);}return stringList.toArray(new String[stringList.size()]);}/*** 添加参数** @param args* @return*/int get_InitParams(String[] args) {int i = 0;System.out.println(Arrays.toString(args));while (i < args.length - 1 && args[i].startsWith("-")) {if (args[i].equals("-service")) {service = args[i + 1];i += 2;} else if (args[i].equals("-network")) {network = args[i + 1];i += 2;} else if (args[i].equals("-daemon")) {daemon = args[i + 1];i += 2;} elseusage();}return i;}public static void main(String[] args) {//监听String service = "1200";String network = ";225.19.19.12";String daemon = "10.50.10.72:7500";String subject = "cm.test";RvlistenerDemo rl = new RvlistenerDemo(service, network, daemon, subject);}
}

这样就实现了一个监听,

发送的话就比较简单

package test;import java.util.*;import com.tibco.tibrv.*;public class RvSendDemo {String service = null;String network = null;String daemon = null;String FIELD_NAME = "DATA";/*** @param args* @return*/public RvSendDemo(String... args) {// parse arguments for possible optional// parameters. These must precede the subject// and message stringsargs = addServerName(args);int i = get_InitParams(args);// we must have at least one subject and one messageif (i > args.length - 2)usage();// open Tibrv in native implementationtry {if (Tibrv.isValid()) {//这里找不到ISIPM()这个方法暂时用着注销错误} else {Tibrv.open(Tibrv.IMPL_NATIVE);}} catch (TibrvException e) {System.err.println("Failed to open Tibrv in native implementation:");e.printStackTrace();System.exit(0);}// Create RVD transportTibrvTransport transport = null;try {transport = new TibrvRvdTransport(service, network, daemon);} catch (TibrvException e) {System.err.println("Failed to create TibrvRvdTransport:");e.printStackTrace();System.exit(0);}// Create the messageTibrvMsg msg = new TibrvMsg();// Set send subject into the messagetry {msg.setSendSubject(args[i++]);} catch (TibrvException e) {System.err.println("Failed to set send subject:");e.printStackTrace();System.exit(0);}try {// Send one message for each parameterwhile (i < args.length) {System.out.println("Publishing: subject=" + msg.getSendSubject() +" \"" + args[i] + "\"");msg.update(FIELD_NAME, args[i]);transport.send(msg);i++;}} catch (TibrvException e) {System.err.println("Error sending a message:");e.printStackTrace();System.exit(0);}// Close Tibrv, it will cleanup all underlying memory, destroy// transport and guarantee delivery.try {Tibrv.close();} catch (TibrvException e) {System.err.println("Exception dispatching default queue:");e.printStackTrace();System.exit(0);}}// print usage information and quitvoid usage() {System.err.println("Usage: java tibrvsend [-service service] [-network network]");System.err.println("            [-daemon daemon] <subject> <messages>");System.exit(-1);}/*** 添加命令参数** @param args* @return*/public String[] addServerName(String[] args) {List<String> stringList = new ArrayList<>();for (int i = 0; i < args.length; i++) {String serverName = "";if (i == 0) {serverName = "-service";} else if (i == 1) {serverName = "-network";} else if (i == 2) {serverName = "-daemon";}if (!serverName.equals("")) {stringList.add(serverName);}stringList.add(args[i]);}return stringList.toArray(new String[stringList.size()]);}int get_InitParams(String[] args) {int i = 0;System.out.println(Arrays.toString(args));while (i < args.length - 1 && args[i].startsWith("-")) {if (args[i].equals("-service")) {service = args[i + 1];i += 2;} else if (args[i].equals("-network")) {network = args[i + 1];i += 2;} else if (args[i].equals("-daemon")) {daemon = args[i + 1];i += 2;} elseusage();}return i;}public static void main(String[] args) {//监听String service = "1200";String network = ";225.19.19.12";String daemon = "10.50.10.72:7500";String subject = "cm.test";String value = "hello world";RvSendDemo rl = new RvSendDemo(service, network, daemon, subject, value);}
}

测试一下,发送

接收就会实时的接收到

TIBCO RV实现局域网内的通讯接收

以上是简单的rv消息接收和发送,具体对于rv的消息实现封装和多频道接收通讯,已封装出来,具体的架构设计详情请看介绍

https://github.com/yanzhao77/TibcoRvDaemon

使用TIBCO Rendezvous发送hello world,实现监听和发送相关推荐

  1. android融云监听消息,关于android:融云-IMkit-拦截或监听所有发送消息

    融云 IMkit 拦挡或监听所有发送音讯 最近集成融云 IMkit 的 SDK, 有一个需要是要监听所有收回去的音讯, 依据音讯类型拦挡或者进行批改. 在官网文档上着了一遍, 都没有找到, 偶尔在看 ...

  2. Android监听SMS发送状态并获取短信服务中心号码

    监听SMS发送状态的例子网上虽然有,但还是太杂了不完全.自己写了个. 短信服务中心号码的获取是通过SmsMessage.getServiceCenterAddress()方法获得.也就是只能从已经存储 ...

  3. linux 监听数据包,linux下网络监听与发送数据包的方法(即libpcap、libnet两种类库的使用方法)...

    linux下可以用libpcap函数库实现监听数据包,使用libnet 函数库发送数据包 安装: 在命令行下apt-get install 就可以了 libpcap的使用: /*author hjj ...

  4. linux下网络监听与发送数据包的方法(即libpcap、libnet两种类库的使用方法)

    linux下可以用libpcap函数库实现监听数据包,使用libnet 函数库发送数据包 安装: 在命令行下apt-get install 就可以了 libpcap的使用: /*author hjjd ...

  5. 微信小程序监听服务器发送消息,微信小程序实时聊天WebSocket

    本文实例为大家分享了微信小程序实时聊天WebSocket的具体代码,供大家参考,具体内容如下 1.所有监听事件先在onload监听. // pages/index/to_news/to_news.js ...

  6. 关于一个监听、发送QQ消息的插件的使用部署

    先来简单介绍下这个插件,这个插件名为酷Q(coolq),官网点这里,是一群大佬们开发的QQ插件,其中有各种各样的群机器人,可以说是非常的好用了. 下面我简单的说一下他的使用以及在linux上的部署: ...

  7. java微信模板消息发送功能。activeMq监听消息,返回模板并发送

    微信接口文档地址:模板消息 | 微信开放文档 发送模板消息接口: http请求方式: POST https://api.weixin.qq.com/cgi-bin/message/template/s ...

  8. django多任务开启rabbitmq,并进行声明队列、发送、阻塞监听消息

    一,编写rabbitmq基础模块类 1,安装pika模块 pip install pika 这里需要注意的是: pika官网明确说明 pika==0.11.0版本只支持python2.6以前的版本. ...

  9. oracle本地连接地址,关于Oracle本地连接出现与监听有关的问题的解决方法探讨,oracle本地连接...

    关于Oracle本地连接出现与监听有关的问题的解决方法探讨,oracle本地连接 关于Oracle本地连接出现与监听有关的问题的解决方法探讨 监听的作用: 用于应用桌面即用户与数据库服务器建立连接的媒 ...

  10. 监听服务端口及邮件报警脚本

    监听端口脚本 vim /root/dkjc.sh#!/bin/bash #name:王康Dk="8000 8080 3306" while : dofor i in $Dkdone ...

最新文章

  1. IntelliJ IDEA自动导入包去除星号(import xxx.*)
  2. ETL工具Kettle使用
  3. sql server 千万级大数据sql更新_医疗SQL每日实例6数据更新大法
  4. 关于linux系统中无法识别某一命令问题的解决方案
  5. 2004-4-3+ asp.net编程环境的配置
  6. python 白化_MeteoInfo和Python显著性检验
  7. 南通大学计算机学院何鹏,南通大学第一次自主评教授,加油!再评多点。
  8. 如何使用 WinUSB 与 USB 设备 (USBDevice) 通信
  9. 支付宝用户可直接签署器官捐献,How about 微信?
  10. 一些技术大牛的博客集锦(转)
  11. github上优秀的源码
  12. RPC规范接口实现模块Flask-JSONRPC
  13. 冈萨雷斯《数字图像处理》学习笔记(一)绪论
  14. 03 高等数学专题——多元函数微积分
  15. 局部敏感哈希(Locality-Sensitive Hashing, LSH)
  16. python判断按键是否按下_Pygame检测是否按下了一个键?
  17. 程序中美元符号$是什么
  18. Dango搭建个人博客:前言
  19. 《娱乐至死》读书笔记(part3)--无知是可以补救的,但如果我们把无知当成知识,我们该怎么做呢?
  20. 学服装设计计算机证有用吗,服装设计怎么考证_服装设计有什么证书

热门文章

  1. 这一周我学习了什么(一)
  2. 两个自然数互素(relatively prime)
  3. DA转换器原理及应用(报告)
  4. android写代码截屏微信,微信等头像截取的实现 - 拉风的道长_Android之路 - OSCHINA - 中文开源技术交流社区...
  5. 第一时间获取文章,可以关注本人公众号:月牙寂道长
  6. 【氵贴慎点】matlab啊啊啊
  7. 存储系统概述——SRAM静态随机存储器
  8. 2021刷百度统计关键词的灰产嫌疑人徐某被抓
  9. c语言专业认知实践报告怎么写,c语言实践报告心得范文
  10. 【图解算法】彻底搞懂(括号匹配)——图解带你直击本质