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次。

    那么看下视图变化:

    好吧,就到这里。

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

  • 相关阅读:
    linux查看CPU和内存信息
    linux yum命令详解
    查看文件中关键字前后几行的内容
    vue.js+web storm安装及第一个vue.js
    android GPS: code should explicitly check to see if permission is available
    ASP.NET MVC Identity 使用自己的SQL Server数据库
    阿里云服务器,tomcat启动,一直卡在At least one JAR was scanned for TLDs yet contained no TLDs就不动了
    ASP.NET MVC4 MVC 当前上下文中不存在名称“Scripts”
    python 将windows字体中的汉字生成图片的方法
    Java android DES+Base64加密解密
  • 原文地址:https://www.cnblogs.com/aoximin/p/13254833.html
Copyright © 2011-2022 走看看