首页 > 系统相关 >进程通讯MQ设计

进程通讯MQ设计

时间:2023-12-28 10:23:56浏览次数:23  
标签:订阅 通讯 string ToImageProcess MQCommand ToMain MQ 进程 CT

系统进程通讯MQ设计

4.4通讯层

4.4.1 系统进程通讯

选用NetMQ消息队列,用于主进程与影像进程之间的通讯,如下图所示:

 

 

 

  1. 系统 Main主进程
  2. 系统 Image 影像进程
  3. NetMQ,轻量级消息库ZeroMQ的一种。

 

主进程与影像进程消息交互如下图:系统 Main主窗体负责接收系统 Image发过来的消息,同理系统 Image 主窗体负责接收系统 Main发过来的消息

 

 

4.4.2 MQ通讯服务
  1. 消息发布服务

 

IPublisherService,包含2个接口

发布消息接口: void Publish(string topicName, string data)

Input 1: string topicName 发布主题,订阅者可根据主题订阅

Input 2: string data 发布数据,Json序列化后的值,参考4.4.3数据格式定义

 

设置发布端口接口: void SetBindPoint(string? endpoint);

Input : string? endpoint NetMQ发布IP和端口

 

  1. 消息订阅服务

 

 

ISubscriberService,包含4个接口

订阅接口1:void RegisterSubscriber(List<string> topics, string? endPoint)

Input 1: List<string> topics 订阅主题列表

Input 2: string? endPoint NetMQ订阅IP和端口

 

订阅所有消息接口2:void RegisterSubscriberAll(string endPoint)

Input : string? endPoint NetMQ订阅IP和端口

 

取消订阅接口:void RemoveSubscriberAll()

 

订阅处理事件:event Action<string, string> Notify

 

4.4.3 MQ数据包格式

发布主题(TopicName):  enum TopicsNetMQ

对应2个枚举值 ToImageProcess, ToMain

 

 

数据包如下图所示:包含2个字段,即包头+数据负载

 

MQPackData 对象

command命令,对应如下:

 

 

 

object? data 数据负载,根据包头的command对应实体类型,使用Json进行序列化和反序列化

一个command对应一个实体类型

ToMain Data:

 

 

ToImageProcess Data:

 

4.4.4 MQ消息类型说明

1. ToImageProcess消息说明

 

TopicName

Code

data[]对应实体

说明

ToImageProcess

MQCommand.EnterTreatState

EnterTreatStateData

ToImageProcess

MQCommand.ChangeImageScreen

ChangeImageScreenData

进入扫描窗体

ToImageProcess

MQCommand.LoadPlanPara

LoadPlanParaData

加载CT扫描协议

ToImageProcess

MQCommand.CloseImageScreen

CloseImageScreenData

关闭影像进程

ToImageProcess

MQCommand.ChangeImageScreen

ChangeImageScreenData

进入主窗体

ToImageProcess

MQCommand.BeginCTScanGo

BeginCTScanGoData

准备CT扫描

ToImageProcess

MQCommand.CTMode

CTModeData

进入/退出CT模式

 

 

 

AbortScan

 

 

 

EndStudy

 

 

 

QA模块

 

 

 

Serivce模块

 

 

 

 

 

 

 

2. ToMain消息说明

 

TopicName

Code

data[]对应实体

说明

ToMain

MQCommand.CTScanEnd

CTScanEndData

CT扫描完成

ToMain

MQCommand.CTReconEnd

CTReconEndData

CT ReconEnd

ToMain

MQCommand.CT_ERROR

CT_ERRORData

CT 扫描错误

ToMain

MQCommand.PrepareCTScanGo

PrepareCTScanGoData

扫描参数设置完成准备扫描

ToMain

MQCommand.ApplayImageReg

ApplayImageRegData

图像配准完成

 

 

 

 

 

 

 

 

 

 

 

 

 

标签:订阅,通讯,string,ToImageProcess,MQCommand,ToMain,MQ,进程,CT
From: https://www.cnblogs.com/ljmzxq/p/17932133.html

相关文章

  • Unreal入门,开关04,蓝图通讯的几种方式(总结)
    1.直接调用,一开始做的开关就是这种方式,在地图编辑的时候给开关对象设置好关联的灯的引用,触发的时候直接调用灯提供的开关函数即可1.1给ActorSwitch添加一个ObjectReference成员1.2在地图编辑器中初始化这个成员,关联到ActorLight1.3在Overlap事件中通过ActorLight的引......
  • RabbitMQ学习二 修改默认密码
    RabbitMQ的一些常用命令#启动rabbitmqservicerabbitmq-serverstart#查看rabbitMQ的运行状态servicerabbitmq-serverstatus#开启rabbitMQ的后台管理插件rabbitmq-pluginsenablerabbitmq_management#重启RabbitMQ服务servicerabbitmq-serverrestart Rabbi......
  • RocketMQ系统性学习-RocketMQ领域模型及Linux下单机安装
    欢迎关注公众号【11来了】,发送笔记可领取Redis、JVM等系列完整pdf!MQ之间的对比三种常用的MQ对比,ActiveMQ、Kafka、RocketMQ性能方面:三种MQ吞吐量级别为:万,百万,十万消息发送时延:毫秒,毫秒,微秒可用性:主从,分布式,分布式扩展性方面:水平伸缩能力:均支持技术栈:Java,Java/Scala,Java功能......
  • 死锁、内部碎片、外部碎片、多进程/多线程、服务器高并发、集群
    死锁:两个(多个)线程互相等待对方数据的过程1.死锁产生条件(解决办法):......
  • 即时通讯技术文集(第29期):IM开发技术合集(Part2) [共18篇]
    为了更好地分类阅读52im.net总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第29 期。[- 1 -] 谈谈移动端IM开发中登录请求的优化[链接] http://www.52im.net/thread-282-1-1.html[摘要] 到底是“登陆”还是“登录”?这是很多处女坐开发者纠结的问题,不......
  • 002-STM32F103+EC800K(移远4G Cat1)基本控制篇(阿里云物联网平台)--STM32+EC800K使用M
    <p><iframename="ifd"src="https://mnifdv.cn/resource/cnblogs/ZLIOTB/EC800K/aliyun.html"frameborder="0"scrolling="auto"width="100%"height="1500"></iframe></p> 说明阿里......
  • 14-STM32F103+ESP8266+EC800K(移远4G Cat1)--STM32+EC800K以SSL单向认证方式连接MQTT
    <p><iframename="ifd"src="https://mnifdv.cn/resource/cnblogs/ZLIOTB/EC800K/my.html"frameborder="0"scrolling="auto"width="100%"height="1500"></iframe></p>  说明安装的M......
  • 线程通讯 网络编程
    //线程的休眠try{Thread.sleep(3000);//毫秒}catch(InterruptedExceptione){e.printStackTrace();}//第二种方式:try{TimeUnit.MINUTES.sleep(3);}catch(InterruptedExceptione){e.printStackTrace();} 联合/插队:join()Threadthread=new......
  • Android 获取进程名称
    Android获取进程名称本篇文章主要获取下当前应用的进程名称,具体代码如下:publicstaticStringgetProcessNameDevice(finalContextcontext){intmyPid=Process.myPid();if(context==null||myPid<=0){return"";}ActivityManager.......
  • rabbitmq安装
    #!/bin/bash###############################################################FileName:install_rabbit.sh#Version:V1.0#Author:junwang#Organization:#CreatedTime:2021-04-1411:12:54#Description:##############################################......