• ActiveMQ Net 版本


    今天在网上查找了些关于 ActiveMQ Net 版本的一些信息,这些代码有的借鉴了网上的一些代码,现做一些简单的纪要:

    1. 发送端:

    View Code
     1 public class SendActiveMQ : ActiveMQ, ISendActiveMQ
     2     {
     3         private ISession _session;
     4         private IConnection _connection;
     5         public SendActiveMQ(string brokerUri, string queueDestination)
     6             : base(brokerUri, queueDestination)
     7         {
     8             ConnectionFactory factory = new ConnectionFactory(this.BrokerUri);
     9             _connection = factory.CreateConnection();
    10             _session = _connection.CreateSession();
    11             //Apache.NMS.Util.SessionUtil.DeleteDestination(_session,queueDestination);
    12         }
    13 
    14         public ISession Session
    15         {
    16             get { return _session; }
    17         }
    18 
    19         public void SendMessage(IMessage message)
    20         {
    21             IDestination destination = SessionUtil.GetDestination(Session, this.QueueDestination);
    22             using (IMessageProducer producer = Session.CreateProducer(destination))
    23             {
    24                 _connection.Start();
    25                 producer.Send(message);
    26             }
    27         }
    28 
    29         public void Dispose()
    30         {
    31             this.Session.Close();
    32             this._connection.Close();
    33         }
    34     }

    2. 接受端:

    View Code
     1  public class ReceiveActiveMQ : ActiveMQ, IReceiveActiveMQ
     2     {
     3         public event MessageReceivedEventHandler OnReceiveMessageEventHandler;
     4         private ActiveMqListener _listener;
     5 
     6         public ReceiveActiveMQ(string brokerUri, string queueDestination)
     7             : base(brokerUri, queueDestination)
     8         {
     9 
    10         }
    11         public void Stop()
    12         {
    13             _listener.Stop();
    14         }
    15        
    16         public void Start()
    17         {
    18             ConnectionFactory factory = new ConnectionFactory(BrokerUri);
    19             TimeSpan timeout = new TimeSpan(0, 0, 10);
    20             using (IConnection connection = factory.CreateConnection())
    21             {
    22                 using (ISession session = connection.CreateSession())
    23                 {
    24                     IDestination destination = SessionUtil.GetDestination(session, QueueDestination);
    25                     using (IMessageConsumer consumer = session.CreateConsumer(destination))
    26                     {
    27                         connection.Start();
    28                         _listener = new ActiveMqListener(consumer, timeout);
    29                         _listener.MessageReceived += new MessageReceivedEventHandler(OnMessageReceived);
    30                         _listener.Start();
    31                     }
    32                 }
    33             }
    34         }
    35 
    36         void OnMessageReceived(object sender, MessageEventArgs args)
    37         {
    38             if (this.OnReceiveMessageEventHandler != null)
    39             {
    40                 this.OnReceiveMessageEventHandler(sender, args);
    41             }
    42         }
    43 
    44         public void Dispose()
    45         {
    46             if (this._listener != null)
    47             {
    48                 this._listener.Stop();
    49             }
    50         }
    51     }

    接收端中使用了个ActiveMqListener 这个类,这个类中有个死循环,用于监听是否受到信息,如果收到信息触发信息收到事件。

  • 相关阅读:
    状态压缩DP 不断学习中。。。。。。
    程序员技术练级攻略(转)
    SQL Server 2008安装提示1608错误的解决方法
    Delphi字符串指针操作
    一个Python练习
    Android开发中的svn问题
    Python使用正则表达式替换源码前序号
    百度地图之Hello world !
    用Python写的一个简单的端口扫描程序
    android地图定位
  • 原文地址:https://www.cnblogs.com/ssjylsg/p/2636724.html
Copyright © 2020-2023  润新知