zoukankan      html  css  js  c++  java
  • ActiveMQ c# 系列——实例(二)

    前言

    前面一章中介绍了activemq,并且呢安装了。

    这一章就来看一下实例吧。

    正文

    我使用队列举例。

    是这样子,队列是一对一的关系,比如说我生产了一条消息,那么只要有一个消费者消费完毕那么就算消费完了。

    这里贴一个思路图:

    简单介绍一下什么意思:

    1.通过connectFactory 建立连接,然后形成tcp会话。

    2.将他们实例化消费者和生产者,这个其实就是库帮我们把生产和消费的api分开,不同的实例调用不同种类的api。

    3.这样就可以将消息发送到目的地或者从目的地取消息。

    生产者:

    static void Main(string[] args)
    {
    	Uri connecturl = new Uri("activemq:tcp://106.15.250.57:61616");
    	IConnectionFactory factory = new ConnectionFactory(connecturl);
    	using (IConnection connection = factory.CreateConnection())
    	{
    		using (ISession session = connection.CreateSession())
    		{
    			IDestination destination = SessionUtil.GetDestination(session, "queue://test");
    			using (IMessageProducer producer = session.CreateProducer(destination))
    			{
    				producer.DeliveryMode = MsgDeliveryMode.Persistent;
    				producer.RequestTimeout = TimeSpan.FromSeconds(2);
    				ITextMessage request = session.CreateTextMessage("oh,my frient");
    				producer.Send(request);
    			}
    		}
    	}
    }
    

    运行后:

    看一下上图中这几个参数的意义:

    1.name 名字 我上面定义了test

    2.number of pending message 未处理的消息

    3.number of consumers 消费者数量

    4.Messages Enqueued 消息队列中的数量

    5.Messages Dequeued 出列的数量

    好的,那么我们来消费一下,看下有什么变化。

    设置消费者:

    class Program
    {
    	static void Main(string[] args)
    	{
    		Uri connecturl = new Uri("activemq:tcp://106.15.250.57:61616");
    		IConnectionFactory factory = new ConnectionFactory(connecturl);
    		using (IConnection connection = factory.CreateConnection())
    		{
    			using (ISession session = connection.CreateSession())
    			{
    				IDestination destination = SessionUtil.GetDestination(session, "queue://test");
    				using (IMessageConsumer consumer=session.CreateConsumer(destination))
    				{
    					connection.Start();
    					consumer.Listener += new MessageListener(onMessage);
    				        Console.ReadKey();
    				}
    			}
    		}
    	}
    
    	protected static void onMessage(IMessage receivedMsg)
    	{
    		ITextMessage message = receivedMsg as ITextMessage;
    		if (message != null)
    		{
    			//查询出消息
    			Console.WriteLine(message.Text);
    		}
    	}
    }
    

    上面显示了3个哈,因为我生产了3次。

    那么看下视图变化:

    好吧,就到这里。

    后续深入一下,比如说事务、持久化等等等。

  • 相关阅读:
    洛谷 1842 [USACO05NOV]奶牛玩杂技【贪心】
    洛谷 1757 通天之分组背包【分组背包】
    洛谷 1330 封锁阳光大学
    洛谷 1019 单词接龙
    【模板】CDQ分治
    BZOJ 2734 洛谷 3226 [HNOI2012]集合选数【状压DP】【思维题】
    BZOJ 2457 [BeiJing2011]双端队列
    洛谷 2015 二叉苹果树
    牛客网 牛可乐发红包脱单ACM赛 C题 区区区间间间
    牛客网 牛可乐发红包脱单ACM赛 B题 小a的旅行计划
  • 原文地址:https://www.cnblogs.com/aoximin/p/13254833.html
Copyright © 2011-2022 走看看