1、Visual Studio 2013、Apache.NMS.ActiveMQ v1.7.2 Released。
下载:http://activemq.apache.org/nms/index.html
引入DLL:Apache.NMS.dll、Apache.NMS.ActiveMQ.dll。
2、界面
3、消息发送至cts.queue队列、消息接收。
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using Apache.NMS; using Apache.NMS.ActiveMQ; namespace activemq { public partial class FrmMain : Form { private IConnectionFactory factory; public FrmMain() { InitializeComponent(); // 初始化 Init(); } /// <summary> /// 初始化 /// </summary> public void Init() { try { //初始化工厂 factory = new ConnectionFactory("tcp://localhost:61616"); } catch { txtLine.Text = "初始化失败"; } } /// <summary> /// 发送 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnSend_Click(object sender, EventArgs e) { // 建立工厂连接 using (IConnection connection = factory.CreateConnection()) { // 通过工厂连接创建Session会话 using (ISession session = connection.CreateSession()) { // 创建生产者 IMessageProducer prod = session.CreateProducer(new Apache.NMS.ActiveMQ.Commands.ActiveMQQueue("cts.queue")); // 创建消息对象 ITextMessage message = prod.CreateTextMessage(); // 赋值 message.Text = "hi, jzh"; prod.Send(message, MsgDeliveryMode.NonPersistent, MsgPriority.Normal, TimeSpan.MinValue); txtLine.Text = "发送成功"; } } } /// <summary> /// 接收 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnGet_Click(object sender, EventArgs e) { // 创建连接工厂 //IConnectionFactory factory = new ConnectionFactory("tcp://localhost:61616"); // 通过工厂创建连接 IConnection connection = factory.CreateConnection(); // 连接服务器端的标识 connection.ClientId = "clientid.9001"; // 启动连接 connection.Start(); // 通过连接创建对话 ISession session = connection.CreateSession(); // 通过会话创建一个消费者 IMessageConsumer consumer = session.CreateConsumer(new Apache.NMS.ActiveMQ.Commands.ActiveMQQueue("cts.queue")); // 注册监听事件 consumer.Listener += new MessageListener(consumer_Listener); } /// <summary> /// 监听事件 /// </summary> /// <param name="message"></param> void consumer_Listener(IMessage message) { ITextMessage msg = (ITextMessage)message; txtReceive.Invoke(new DelegateRevMessage(RevMessage), msg); } /// <summary> /// /// </summary> /// <param name="message"></param> public delegate void DelegateRevMessage(ITextMessage message); /// <summary> /// /// </summary> /// <param name="message"></param> public void RevMessage(ITextMessage message) { txtReceive.Text += string.Format(@"接收到:{0}{1}", message.Text, Environment.NewLine); } } }