分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 运营维护

NetMQ 消息队列

发布时间:2023-09-06 01:56责任编辑:顾先生关键词:消息队列

忘记是看到哪个博客写的了,如有侵权,请见谅!!

1.辅助Helper类 (添加System.Messaging引用)

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Messaging;namespace ToolService{ ???public class MQHelp ???{ ???????/// <summary> ???????/// 创建一个消息队列 ???????/// </summary> ???????/// <param name="name">消息队列的名称</param> ???????/// <returns>是否创建成功</returns> ???????public static bool CreateNewMQ(string name) ???????{ ???????????try ???????????{ ???????????????if (!MessageQueue.Exists(".\\private$\\" + name)) ???????????????{ ???????????????????MessageQueue mq = MessageQueue.Create(".\\private$\\" + name); ???????????????????mq.Label = "private$\\" + name; ???????????????????return true; ???????????????} ???????????????else ???????????????{ ???????????????????return false; ???????????????} ???????????} ???????????catch (Exception ex) ???????????{ ???????????????throw ex; ???????????} ???????} ???????/// <summary> ???????/// 删除一个消息队列 ???????/// </summary> ???????/// <param name="name">消息队列的名称</param> ???????/// <returns>是否删除成功</returns> ???????public static bool DeleteNewMQ(string name) ???????{ ???????????try ???????????{ ???????????????if (!MessageQueue.Exists(".\\private$\\" + name)) ???????????????{ ???????????????????MessageQueue.Delete(".private$\\" + name); ???????????????????return true; ???????????????} ???????????????else ???????????????{ ???????????????????return false; ???????????????} ???????????} ???????????catch (Exception ex) ???????????{ ???????????????throw ex; ???????????} ???????} ???????/// <summary> ???????/// 发送消息到指定消息队列 ???????/// </summary> ???????/// <param name="mq_name">消息队列名</param> ???????/// <param name="msg_lable">消息头</param> ???????/// <param name="msg_body">消息体</param> ???????public static void SendMssage(string mq_name, string msg_lable, string msg_body) ???????{ ???????????try ???????????{ ???????????????MessageQueue mq = new MessageQueue(@".\private$\"+mq_name); ???????????????Message message = new Message(); ???????????????message.Label = msg_lable; ???????????????message.Body = msg_body; ???????????????mq.Send(message); ???????????} ???????????catch (Exception ex) ???????????{ ???????????????throw ex; ???????????} ???????} ???????/// <summary> ???????/// 从指定消息队列获取第一条消息 ???????/// </summary> ???????/// <param name="mq_name">消息队列名称</param> ???????/// <returns>消息内容</returns> ???????public static Message ReceiveMessage(string mq_name) ???????{ ???????????try ???????????{ ???????????????MessageQueue mq = new MessageQueue(@".\private$\" + mq_name); ???????????????if (mq.GetAllMessages().Length > 0) ???????????????{ ???????????????????Message message = mq.Receive(); ???????????????????if (message != null) ???????????????????{ ???????????????????????message.Formatter = new System.Messaging.XmlMessageFormatter(new Type[] { typeof(string) }); ???????????????????} ???????????????????return message; ???????????????} ???????????????else ???????????????{ ???????????????????return null; ???????????????} ???????????} ???????????catch (Exception ex) ???????????{ ???????????????throw ex; ???????????} ??????????????????} ???}}

2.执行

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 ToolService;using System.Timers;using System.Messaging;using System.Windows;namespace WindowsMQSend{ ???public partial class FromShow : Form ???{ ???????private static readonly string mq_name = "textMQ"; ???????private System.Timers.Timer timer; ???????public FromShow() ???????{ ???????????InitializeComponent(); ???????????MQHelp.CreateNewMQ(mq_name); ???????????timer = new System.Timers.Timer(); ???????????timer.Interval = 1000; ???????????timer.Elapsed += new System.Timers.ElapsedEventHandler(flash); ???????????timer.Start(); ???????} ???????private void btnSend_Click(object sender, EventArgs e) ???????{ ???????????MQHelp.SendMssage(mq_name,"test",txtInput.Text); ???????} ???????private void flash(object sender, ElapsedEventArgs e) ???????{ ???????????var message = MQHelp.ReceiveMessage(mq_name); ???????????if (message != null) ???????????{ ???????????????Action hide = delegate () { ???????????????????txtResult.Text += message.Id + " " + message.Label + " " + message.Body + "\n"; ???????????????}; ???????????????this.BeginInvoke(hide); ???????????} ???????} ???}}

NetMQ 消息队列

原文地址:https://www.cnblogs.com/eimers/p/9086682.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved