activemq

    public Form2()
        {
            InitializeComponent();
            InitProducer();
        }
        private IConnectionFactory factory;
        public void InitProducer()
        {
            try
            {
                //初始化工厂,这里默认的URL是不需要修改的
                factory = new ConnectionFactory("tcp://localhost:61616");

            }
            catch
            {
                MessageBox.Show("初始化失败!");
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //通过工厂建立连接
            using (IConnection connection = factory.CreateConnection())
            {
                //通过连接创建Session会话
                using (ISession session = connection.CreateSession())
                {
                    //通过会话创建生产者,方法里面new出来的是MQ中的Queue
                    IMessageProducer prod = session.CreateProducer(new Apache.NMS.ActiveMQ.Commands.ActiveMQQueue("dxQueue"));
                    //创建一个发送的消息对象
                    abc v = new abc();
                    v.a = "dfsafds" + DateTime.Now;
                    v.b = "dddd";
                    v.c = "ddddddddd--------";
                    v.id = 55;
                    IObjectMessage message = prod.CreateObjectMessage(v);

                    //生产者把消息发送出去,几个枚举参数MsgDeliveryMode是否长链,MsgPriority消息优先级别,发送最小单位,当然还有其他重载
                    prod.Send(message, MsgDeliveryMode.NonPersistent, MsgPriority.Normal, TimeSpan.MinValue);
                    MessageBox.Show("发送成功!");


                }
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            //创建连接工厂
            IConnectionFactory factory = new ConnectionFactory("tcp://localhost:61616");
            //通过工厂构建连接
            IConnection connection = factory.CreateConnection();
            //这个是连接的客户端名称标识
            connection.ClientId = "firstQueueListener";
            //启动连接,监听的话要主动启动连接
            connection.Start();
            //通过连接创建一个会话
            ISession session = connection.CreateSession();
            //通过会话创建一个消费者,这里就是Queue这种会话类型的监听参数设置
            IMessageConsumer consumer = session.CreateConsumer(new Apache.NMS.ActiveMQ.Commands.ActiveMQQueue("dxQueue"));
            //注册监听事件
            consumer.Listener += new MessageListener(consumer_Listener);
            //connection.Stop();
            //connection.Close();  

        }

        void consumer_Listener(IMessage message)
        {
            IObjectMessage msg = (IObjectMessage)message;
            abc v = msg.Body as abc;
            //异步调用下,否则无法回归主线程
            this.Invoke((MethodInvoker)delegate { MessageBox.Show(v.a,v.b); });

        }

  Apache.NMS.ActiveMQ.dll

Apache.NMS.dll

  public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            InitProducer();
        }
        private IConnectionFactory factory;
        public void InitProducer()
        {
            try
            {
                //初始化工厂,这里默认的URL是不需要修改的
                factory = new ConnectionFactory("tcp://localhost:61616");

            }
            catch
            {
                lbMessage.Text = "初始化失败!!";
            }
        }


        private void button1_Click(object sender, EventArgs e)
        {
            //通过工厂建立连接
            using (IConnection connection = factory.CreateConnection())
            {
                //通过连接创建Session会话
                using (ISession session = connection.CreateSession())
                {
                    //通过会话创建生产者,方法里面new出来的是MQ中的Queue
                    IMessageProducer prod = session.CreateProducer(new Apache.NMS.ActiveMQ.Commands.ActiveMQQueue("firstQueue"));
                    //创建一个发送的消息对象
                    ITextMessage message = prod.CreateTextMessage();
                    //给这个对象赋实际的消息
                    message.Text = textBox1.Text;
                    //设置消息对象的属性,这个很重要哦,是Queue的过滤条件,也是P2P消息的唯一指定属性
                    message.Properties.SetString("filter", "demo");
                    //生产者把消息发送出去,几个枚举参数MsgDeliveryMode是否长链,MsgPriority消息优先级别,发送最小单位,当然还有其他重载
                    prod.Send(message, MsgDeliveryMode.NonPersistent, MsgPriority.Normal, TimeSpan.MinValue);
                    lbMessage.Text = "发送成功!!";
                    textBox1.Text = "";
                    textBox1.Focus();


                }
            }

        }

        private void button2_Click(object sender, EventArgs e)
        {
            Form2 f2 = new Form2();
            f2.Show();
        }
    }

    [Serializable]
    public class abc
    {
        public string a { get; set; }
        public string b { get; set; }
        public string c { get; set; }
        public int id { get; set; }
    }

  

posted @ 2017-12-20 16:41  hi.....  阅读(207)  评论(0编辑  收藏  举报