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

那么看下视图变化:

好吧,就到这里。

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

猜你喜欢

转载自www.cnblogs.com/aoximin/p/13254833.html