C# EMS Client
从 C# 客户端连接 Tibco EMS
下面例子简要介绍 C# 客户端怎样使用 TIBCO.EMS.dll 来连接 EMS 服务器.
using System;
using System.Diagnostics;
using System.Threading;
using TIBCO.EMS; namespace TestEMS
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Test started");
new Program().Run();
Console.ReadLine();
} private void Run()
{
StartEMSServer();
CreateEMSServerTopicPublisher();
CreateClientTopicSubscriber("Owner LIKE '%Rich Newman%'"); // Pass "" for no message selector
EMSServerPublishThisMessage("Hello World", "Owner", "Rich Newman");
} #region EMS Server
private const string tibcoEMSPath = @"C:\tibco\ems\5.0\bin\";
private readonly string tibcoEMSExecutable = tibcoEMSPath + "tibemsd.exe";
private Process tibcoEMSProcess;
public void StartEMSServer()
{
tibcoEMSProcess = new Process();
ProcessStartInfo processStartInfo = new ProcessStartInfo(tibcoEMSExecutable);
tibcoEMSProcess.StartInfo = processStartInfo;
processStartInfo.WorkingDirectory = tibcoEMSPath;
bool started = tibcoEMSProcess.Start();
Thread.Sleep(500);
} TopicConnection publisherConnection;
TopicSession publisherSession;
TopicPublisher emsServerPublisher;
private void CreateEMSServerTopicPublisher()
{
TopicConnectionFactory factory = new TIBCO.EMS.TopicConnectionFactory("localhost");
publisherConnection = factory.CreateTopicConnection("", ""); // Username, password
publisherSession = publisherConnection.CreateTopicSession(false, Session.AUTO_ACKNOWLEDGE);
Topic generalTopic = publisherSession.CreateTopic("GeneralTopic");
emsServerPublisher = publisherSession.CreatePublisher(generalTopic); publisherConnection.Start();
} internal void EMSServerPublishThisMessage(string message, string propertyName, string propertyValue)
{
TextMessage textMessage = publisherSession.CreateTextMessage();
textMessage.Text = message;
textMessage.SetStringProperty(propertyName, propertyValue);
emsServerPublisher.Publish(textMessage);
Console.WriteLine("EMS Publisher published message: " + message);
} #endregion #region EMS Client
TopicConnection subscriberConnection;
TopicSession subscriberSession;
private void CreateClientTopicSubscriber(string messageSelector)
{
TopicConnectionFactory factory = new TIBCO.EMS.TopicConnectionFactory("localhost");
subscriberConnection = factory.CreateTopicConnection("", ""); // Username, password
subscriberConnection.Start();
subscriberSession = subscriberConnection.CreateTopicSession(false, Session.AUTO_ACKNOWLEDGE);
Topic clientTopic = subscriberSession.CreateTopic("GeneralTopic");
TopicSubscriber clientTopicSubscriber = subscriberSession.CreateSubscriber(clientTopic, messageSelector, true);
clientTopicSubscriber.MessageHandler += new EMSMessageHandler(test_MessageHandler);
} void test_MessageHandler(object sender, EMSMessageEventArgs args)
{
Console.WriteLine("EMS Client received message: " + args.Message.ToString());
} #endregion
}
}
C# EMS Client的更多相关文章
- tibco EMS 8.2.0安装
安装环境 序号 项目 值 1 OS版本 Red Hat Enterprise Linux Server release 7.1 (Maipo) 2 内核版本 3.10.0-229.el7.x86_64 ...
- 轻量级远程调用框架-Hessian学习笔记-Demo实现
Hessian是一个轻量级的remoting onhttp工具,使用简单的方法提供了RMI的功能. 相比WebService,Hessian更简单.快捷.采用的是二进制RPC协议,因为采用的是二进制协 ...
- Android简单实现Socket通信,client连接server后,server向client发送文字数据
案例实现的是简单的Socket通信,当client(Androidclient)连接到指定server以后,server向client发送一句话文字信息(你能够拓展其他的了) 先看一下服务端程序的实现 ...
- vmware里面的名词 vSphere、vCenter Server、ESXI、vSphere Client
vmware里面的名词 vSphere.vCenter Server.ESXI.vSphere Client vSphere.vCenter Server.ESXI.vSphere Client VS ...
- Apache2.4:AH01630 client denied by server configuration
问题说明:Apache服务总共有4个,是为了防止单点故障和负载均衡,负载均衡控制由局方的F5提供. 访问的内容在NAS存储上,现象是直接访问每个apache的服务内容都是没有问题,但是从负载地址过来的 ...
- [异常解决] windows用SSH和linux同步文件&linux开启SSH&ssh client 报 algorithm negotiation failed的解决方法之一
1.安装.配置与启动 SSH分客户端openssh-client和openssh-server 如果你只是想登陆别的机器的SSH只需要安装openssh-client(ubuntu有默认安装,如果没有 ...
- xamarin IOS 报错处理: an error occurred on client Build420719 while
xamarin IOS 开发时如果报错如下: an error occurred on client Build420719 while...... 出现如下问题时,可能是1.丢失文件2.没有包括在项 ...
- ASP.NET OAuth:access token的加密解密,client secret与refresh token的生成
在 ASP.NET OWIN OAuth(Microsoft.Owin.Security.OAuth)中,access token 的默认加密方法是: 1) System.Security.Crypt ...
- 在ASP.NET中基于Owin OAuth使用Client Credentials Grant授权发放Token
OAuth真是一个复杂的东东,即使你把OAuth规范倒背如流,在具体实现时也会无从下手.因此,Microsoft.Owin.Security.OAuth应运而生(它的实现代码在Katana项目中),帮 ...
随机推荐
- 胖ap和瘦ap区别
胖AP(FAT AP)模式:适合小面积无线覆盖,AP单独使用,无需TP-LINK无线控制器(AC)即可独立工作,无线组网成本低: 瘦AP(FIT AP)模式:适合大面积无线覆盖,通过TP-LINK无线 ...
- 嘿, 你知道吗, 再也不需要for循环了!
做一个优雅的程序员 JavaScript是一门优雅的语言, 这个'优雅'体验在JS逻辑层次处于高段位的水平, 什么意思呢, 就是一个js应用的主线剧情一定全部是函数式表达的高层可读逻辑, 还是不懂? ...
- 网络配置vlan
1. # This file describes the network interfaces available on your system # and how to activate them. ...
- Struts2之Domain Model(域模型)。
使用原因 为了避免在action中有太多的类,而需要写大量的get().set(). 故在Struts2 使用 了 domain model. Action: private User user; p ...
- C# 在Bitmap上绘制文字出现锯齿的问题
解决锯齿问题主要是修改Graphics的属性 修复绘制图片锯齿问题可以修改 g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiA ...
- ubuntu配置apache和cgi
ubuntu配置apache和cgi . 更新源并进行安装,否则后面的下载可能会不成功. sudo apt-get update sudo apt-get upgrade . 安装apache2服务 ...
- imx6 uart分析
本文主要记录: 1.uart设备注册 2.uart驱动注册 3.上层应用调用有些地方理解的还不是很透彻,希望指正. 1.uart设备注册过程 MACHINE_START(MX6Q_SABRESD, & ...
- (转)如何基于FFMPEG和SDL写一个少于1000行代码的视频播放器
原文地址:http://www.dranger.com/ffmpeg/ FFMPEG是一个很好的库,可以用来创建视频应用或者生成特定的工具.FFMPEG几乎为你把所有的繁重工作都做了,比如解码.编码. ...
- mysql的优化:官网地址
http://dev.mysql.com/doc/refman/5.1/zh/optimization.html#index-merge-optimization
- Linux Vi/Vim 的使用及实例
什么是 vim? Vim是从 vi 发展出来的一个文本编辑器.代码补完.编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用. 简单的来说, vi 是老式的字处理器,不过功能已经很齐全了,但是 ...