c#+cad2010+MQ接收消息
cad2015+版本可以使用TrayItem气泡显示消息
static TrayItem trayItem = new TrayItem();
public static void testtrayitem()
{
try
{ //新建一个气泡通知窗口
TrayItemBubbleWindow window = new TrayItemBubbleWindow();
window.Title = "气泡标题";
window.HyperText = "气泡内容连接";
window.Text = "气泡内容";
window.IconType = IconType.Information; Autodesk.AutoCAD.ApplicationServices.Application.StatusBar.TrayItems.Add(trayItem);
trayItem.ShowBubbleWindow(window);
Autodesk.AutoCAD.ApplicationServices.Application.StatusBar.Update();
//气泡窗口关闭事件
//window.Closed += (sender, e) =>
//{
// if (e.CloseReason == TrayItemBubbleWindowCloseReason.HyperlinkClicked)
// {
// System.Windows.MessageBox.Show("关闭气泡消息"); // }
// //气泡窗口关闭后,将托盘从状态栏删除
// //Autodesk.AutoCAD.ApplicationServices.Application.StatusBar.TrayItems.Remove(trayItem);
// //Autodesk.AutoCAD.ApplicationServices.Application.StatusBar.Update();
//};
System.Timers.Timer t = new System.Timers.Timer(10000);
t.Elapsed += new System.Timers.ElapsedEventHandler(Timer_ChangePos);//到达时间的时候执行事件;
t.AutoReset = false;//设置是执行一次(false)还是一直执行(true);
t.Enabled = true;//是否执行System.Timers.Timer.Elapsed事件;
}
catch (System.Exception ex)
{
trayItem.CloseBubbleWindows();
} }
private static void Timer_ChangePos(object sender, System.Timers.ElapsedEventArgs e)
{
trayItem.CloseBubbleWindows();
}
cad2010+mq+dotnetbar的 DevComponents.DotNetBar.Balloon窗体:
IExtensionApplication接口下:
//为了能及时接收消息
RabbitMQClient mq = new RabbitMQClient();
public class RabbitMQClient
{
private string exchangeName = "topic_logs"; //
private string exchangeType = ExchangeType.Topic;//交换机类型
Action<string, Form> SetText;
public RabbitMQClient()
{
if (CommandFun.frmmsg==null)
{
CommandFun.frmmsg = new FrmMsg();
}
ReceiveMsg(CommandFun.frmmsg);
SetText += CommandFun.ShowLoadAlert;
}
public void ReceiveMsg(Form frm)
{
var factory = new ConnectionFactory()
{
HostName = "iporlocalhost",
Port = 端口,
UserName = "administrator",
Password = "密码"
};
try
{ var connection = factory.CreateConnection();
var channel = connection.CreateModel(); channel.ExchangeDeclare(exchangeName, exchangeType);
var queueName = channel.QueueDeclare().QueueName; channel.QueueBind(queueName, exchangeName, "*.*.two");
channel.QueueBind(queueName, exchangeName, "two.#"); var consumer = new EventingBasicConsumer(channel);
consumer.Received += (model, ea) =>
{
var msg = Encoding.UTF8.GetString(ea.Body);
if (msg!=null && msg.ToString().Length>)
{
if (frm == null)
{
frm =CommandFun.frmmsg;
}
frm.Invoke(SetText, msg, frm);
}
};
channel.BasicConsume(queueName, true, consumer);
}
catch (System.Exception ex)
{ }
}
}
public class CommandFun
{
public static FrmMsg frmmsg;//接收到消息
//弹出右下角消息窗口
public static void ShowLoadAlert(string msg, System.Windows.Forms.Form frmmsg)
{
FrmMsg m_AlertOnLoad = new FrmMsg();
Rectangle r = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea;// GetWorkingArea(this);
m_AlertOnLoad.Location = new Point(r.Right - m_AlertOnLoad.Width, r.Bottom - m_AlertOnLoad.Height);
m_AlertOnLoad.AutoClose = true;
m_AlertOnLoad.AutoCloseTimeOut = ;
m_AlertOnLoad.AlertAnimation = eAlertAnimation.BottomToTop;
m_AlertOnLoad.AlertAnimationDuration = ;
m_AlertOnLoad.SetLableText(msg);
m_AlertOnLoad.Show(false);
} }
CommandFun
窗体:
public partial class FrmMsg : DevComponents.DotNetBar.Balloon
{
public FrmMsg()
{
CheckForIllegalCrossThreadCalls = false;
InitializeComponent();
} public void SetLableText(string msg)
{
lbl_msg.Text = string.Format("{0}\r\n", msg);
}
}
FrmMsg
c#+cad2010+MQ接收消息的更多相关文章
- springboot整合mq接收消息队列
继上篇springboot整合mq发送消息队列 本篇主要在上篇基础上进行activiemq消息队列的接收springboot整合mq发送消息队列 第一步:新建marven项目,配置pom文件 < ...
- RocketMQ源码 — 三、 Consumer 接收消息过程
Consumer pull message 订阅 在Consumer启动之前先将自己放到一个本地的集合中,再以后获取消费者的时候会用到,同时会将自己订阅的信息告诉broker 接收消息 consume ...
- MQ(队列消息的入门)
消息中间件利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成,通过提供消息传递和消息排队模型,它可以在分布式环境下拓展进程间的通信,对于消息中间件,常见的角色大致也 ...
- RocketMQ源码 — 四、 Consumer 接收消息过程
Consumer consumer pull message 订阅 在Consumer启动之前先将自己放到一个本地的集合中,再以后获取消费者的时候会用到,同时会将自己订阅的信息告诉broker 接收消 ...
- 架构设计:系统间通信(20)——MQ:消息协议(下)
(接上文<架构设计:系统间通信(19)--MQ:消息协议(上)>) 上篇文章中我们重点讨论了"协议"的重要性.并为各位读者介绍了Stomp协议和XMPP协议. 这两种协 ...
- JMS 之 Active MQ 的消息传输
本文使用Active MQ5.6 一.消息协商器(Message Broker) broke:消息的交换器,就是对消息进行管理的容器.ActiveMQ 可以创建多个 Broker,客户端与Active ...
- MQ中将消息发送至远程队列的配置
MQ中将消息发送至远程队列的配置 摘自MQ资源管理器帮助文档V7 在开始学习本教程之前,您需要从系统管理员处了解标识网络上接收机器的名称:IP地址.MQ的端口号.队列管理器.接收(远程机器)或者是发送 ...
- 聊聊mq中消息消费的几种方式
mq系列文章 对mq了解不是很多的,可以看一下下面两篇文章: 聊聊mq的使用场景 聊聊业务系统中投递消息到mq的几种方式 聊聊消息消费的几种方式 如何确保消息至少消费一次 如何保证消息消费的幂等性 本 ...
- ActiveMQ 发送和接收消息
一.添加 jar 包 <dependency> <groupId>org.apache.activemq</groupId> <artifactId>a ...
随机推荐
- 深入理解Python字符编码
不论你是有着多年经验的 Python 老司机还是刚入门 Python 不久,你一定遇到过UnicodeEncodeError.UnicodeDecodeError 错误,每当遇到错误我们就拿着 enc ...
- linux下安装python3(转)
一.Linux下安装Python 二.Linux下Python安装完成后如何使用pip命令 三.Linux下Python安装完成后如何使用yum命令 四.Linux下安装Anaconda 五.Linu ...
- Installshield创建快捷方式不能正常运行的几种原因
Installshield软件提供创建快捷方式的功能,但是经常有朋友发现创建了以后快捷方式不能运行,在此列一下几种常见原因供各位朋友参考: 1. 没有选择相应的working directory,这种 ...
- 《HTTP权威指南》读书笔记(一)
1.因特网上有数千种不同的数据类型,HTTP仔细地给每种要通过Web传输的对象都搭上了名为MIME类型的数据格式标签.WEB服务器会为所有HTTP对象数据附加一个MIME类型.当Web浏览器从服务器中 ...
- 测试那些事儿—软测必备的Linux知识(四)
1.文件权限管理 ls -l 显示的内容如下: 10个字符确定不同用户能对文件干什么 第一个字符:-表示文件,d表示目录,l表示链接 其余字符每3个一组(rwx),r-读,w-写,x-执行 第一组rw ...
- 2015219付颖卓《网络对抗》EXP8 Web基础
实验后回答问题 1.什么是表单 来自百度百科的官方定义:表单在网页中主要负责数据采集功能.一个表单有三个基本组成部分: 表单标签:这里面包含了处理表单数据所用CGI程序的URL以及数据提交到服务器的方 ...
- Django_web框架的理解
web框架的本质 import socket sk = socket.socket() sk.bind(("127.0.0.1", 80)) sk.listen() while T ...
- conts、var 、let的区别
1.const定义的变量不可以直接修改,通过 this.a = 'kkk' 进行修改, 而且必须初始化. 2.var定义的变量可以修改,如果不初始化会输出undefined 3.let是块级作用域,函 ...
- spring查看生成的cglib代理类源码详解
1.让程序阻塞(抛出异常会导致程序结束,所以在抛出异常之前阻塞) 2. windows控制台 cd到jdk目录下的lib目录,找到sa-jdi.jar 执行: java -classpath sa-j ...
- 个人 git-hub使用方法
注册码云 安装git hub git init here 创建本地仓库(repository),将会在文件夹下创建一个 .git 文件夹,.git 文件夹里存储了所有的版本信息.标记等 ...