• .NET使用C#连接TIBCO的JMS消息服务


    using System;
    using System.Collections.Generic;
    using System.Text;
    using TIBCO.EMS;

    namespace EII.JMS
    {
    public class MsgReceiver
    {
    private TopicSubscriber subscriber;
    private TopicConnection connection;

    public string ServerUrl { get; set; }
    public string UserName { get; set; }
    public string PassWord { get; set; }
    public string TopicName { get; set; }
    public string DurableName { get; set; }
    public string ClientID { get; set; }

    /// <summary>
    /// JMS消息接收器
    /// </summary>
    /// <param name="serverUrl">服务器地址</param>
    /// <param name="userName">用户名</param>
    /// <param name="passWord">密码</param>
    /// <param name="topicName">Topic名称</param>
    /// <param name="durableName">Durable名称</param>
    /// <param name="clientID">客户端ID</param>
    public MsgReceiver(string serverUrl, string userName, string passWord, string topicName, string durableName, string clientID)
    {
    this.ServerUrl = serverUrl;
    this.UserName = userName;
    this.PassWord = passWord;
    this.TopicName = topicName;
    this.DurableName = durableName;
    this.ClientID = clientID;
    }

    /// <summary>
    /// 连接服务器
    /// </summary>
    /// <returns></returns>
    public bool ConnectServer()
    {
    try
    {
    TopicConnectionFactory factory
    = new TIBCO.EMS.TopicConnectionFactory(ServerUrl);
    connection
    = factory.CreateTopicConnection(UserName, PassWord);

    if (ClientID != null)
    {
    connection.ClientID
    = ClientID;
    }

    TopicSession session
    = connection.CreateTopicSession(false, Session.AUTO_ACKNOWLEDGE);
    Topic topic
    = session.CreateTopic(TopicName);
    subscriber
    = session.CreateDurableSubscriber(topic, DurableName);
    connection.Start();
    return true;
    }
    catch (EMSException e)
    {
    throw new Exception(e.ToString());
    }
    }

    /// <summary>
    /// 接收消息
    /// </summary>
    /// <returns></returns>
    public string Receive()
    {
    try
    {
    BytesMessage message
    = subscriber.Receive() as BytesMessage;

    if (message != null)
    {
    byte[] file = new byte[message.BodyLength];
    message.ReadBytes(file);

    return System.Text.Encoding.UTF8.GetString(file);
    }
    else
    {
    return null;
    }
    }
    catch (Exception ex)
    {
    throw ex;
    }
    }

    /// <summary>
    /// 关闭连接
    /// </summary>
    public void CloseConn()
    {
    try
    {
    this.connection.Close();
    }
    catch (Exception ex)
    {
    throw ex;
    }
    }
    }
    }
  • 相关阅读:
    算法(第四版)C# 习题题解——2.4
    算法(第四版)C# 习题题解——2.3
    .NET编译的目标平台(AnyCPU,x86,x64)
    Windows无法访问局域网内共享文件夹[0x800704cf,0x80070035]解决方案
    ASP.NET 网站部署到IIS上如何进行调试
    ASP.NET 前台Javascript调用后台代码 / 后台调用前台Javascript
    C#反射-Assembly.Load、LoadFrom与LoadFile
    Entity Framework Context上下文管理(CallContext 数据槽)
    Entity Framework(EF的Code First方法)
    Entity Framework(EF的Model First方法)
  • 原文地址:https://www.cnblogs.com/kxlf/p/1689545.html
Copyright © 2020-2023  润新知