C# ActiveMQ使用demo
安装流程在上一篇
引入包
在nuget中下载安装Apache.NMS.ActiveMQ 如图 收发都要
引入
using Apache.NMS;
using Apache.NMS.ActiveMQ;
发信方
///对方接收成功后给我们返回的消息
private void OnConsumedMessageReceived(IMessage message)
{
// 获取消息属性,判断是否已消费
if (message is ITextMessage)
{
//Console.WriteLine("Received reply message: " + message.Text);
}
}
//开始发送代码
IConnectionFactory factory = new ConnectionFactory("tcp://localhost:61616");
// 创建连接
using (IConnection connection = factory.CreateConnection())
{
// 开启连接
connection.Start();
// 创建会话
using (ISession session = connection.CreateSession())
{
// 创建目的地(队列或主题)发送
IDestination destination = session.GetQueue("testqueue");
//创建目的地(队列或主题)返回
IDestination destination_result = session.GetQueue("test_result");
IMessageConsumer consumedConsumer_result = session.CreateConsumer(destination_result);
consumedConsumer_result.Listener += new MessageListener(OnConsumedMessageReceived);
// 创建生产者
using (IMessageProducer producer = session.CreateProducer(destination))
{
// 创建消息
ITextMessage message = session.CreateTextMessage("Hello, ActiveMQ!" + DateTime.Now.ToString());
//与返回信息对应
message.NMSCorrelationID = "id_code_" + DateTime.Now.ToString();//预留信息
message.NMSReplyTo = destination_result;//返回列队
// 发送消息
producer.Send(message);
}
}
connection.Close();
}
收信方
此处创建的是控制台程序demo 入图
internal class Program
{
public static void mq_load()
{
// 创建连接工厂
IConnectionFactory factory = new ConnectionFactory("tcp://localhost:61616");
// 创建连接
using (IConnection connection = factory.CreateConnection())
{
// 创建会话
using (ISession session = connection.CreateSession())
{
// 创建目的地
IDestination destination = session.GetQueue("testqueue");
// 创建消费者
IMessageConsumer consumer = session.CreateConsumer(destination);
// 设置消息监听器
consumer.Listener += new MessageListener(OnMessage);
//需要返回消息才返回
if (message.NMSReplyTo != null)
{
// 创建返回消息
ITextMessage returnMessage = session.CreateTextMessage("需要返回通知已经收到了");
// 设置返回消息的相关属性
returnMessage.NMSCorrelationID = message.NMSCorrelationID;
returnMessage.NMSReplyTo = message.NMSReplyTo;
// 创建消息生产者
using (IMessageProducer producer = session.CreateProducer(message.NMSReplyTo))
{
// 发送返回消息
producer.Send(returnMessage);
}
}
// 启动连接
connection.Start();
// 等待消息
Console.ReadLine();
}
}
}
static void OnMessage(IMessage message)
{
if (message is ITextMessage textMessage)
{
// 处理消息
Console.WriteLine("Received message: " + textMessage.Text);
}
}
static void Main(string[] args)
{
mq_load();
}
}