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次。
那么看下视图变化:
好吧,就到这里。
后续深入一下,比如说事务、持久化等等等。