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

    那么看下视图变化:

    好吧,就到这里。

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

  • 相关阅读:
    个人阅读作业1
    个人项目-词频统计
    Android中BroadcastReceiver的两种注册方式(静态和动态)详解
    JAVA装饰者模式(从现实生活角度理解代码原理)
    博客维护停止,需要的伙伴们移步http://blog.csdn.net/panhouye
    Android中EditText设置输入条件
    Andriod中自定义Dialog样式的Activity点击空白处隐藏软件盘(Dialog不消失)
    Android中调用文件管理器并返回选中文件的路径
    java中打印实心菱形以及空心菱形的方法
    Android中使用findViewByMe提升组件查找效率
  • 原文地址:https://www.cnblogs.com/aoximin/p/13254833.html
Copyright © 2011-2022 走看看