消息中间件
- 格式:docx
- 大小:174.00 KB
- 文档页数:17
使用消息中间件实现解耦合和异步通信消息中间件是一种用于解耦合和实现异步通信的技术,它在现代软件架构中扮演着至关重要的角色。
消息中间件是一种软件服务,允许不同的应用程序或服务通过发送和接收消息进行通信,而不需要直接相互调用。
这种解耦合的架构使得系统更加灵活、可扩展和可维护。
在传统的应用程序设计中,通常会出现一种紧耦合的现象,这意味着不同的组件之间的关系非常紧密,一个组件的改动可能会影响到其他组件的功能。
而引入消息中间件之后,不同的组件只需要通过发送和接收消息进行通信,它们之间的关系更加松散,不再直接依赖于对方的内部实现细节,从而降低了系统的耦合度。
消息中间件能够实现异步通信的功能,这意味着发送者和接收者不需要同时在线,消息可以在发送之后被暂存起来,等待接收者处理。
这种异步通信的方式可以提高系统的可用性和性能,因为发送者和接收者之间的耦合度降低了,它们可以并发地处理消息,从而加快系统的响应速度。
另外,消息中间件还可以实现消息的持久化和可靠性传输。
在消息发送之后,即使接收者暂时不可用,消息也可以被保存在中间件中,等待接收者重新上线后再次接收。
这种机制可以保证消息的可靠传输,避免消息的丢失或重复,确保系统的数据一致性。
消息中间件有多种不同的实现方式,常见的消息中间件包括RabbitMQ、Kafka、ActiveMQ等。
它们有不同的特点和适用场景,开发人员可以根据具体的需求选择合适的消息中间件。
在使用消息中间件的过程中,需要注意以下几点:首先,要确保消息的格式和内容是标准化的,以便不同的组件能够正确地解析和处理消息。
消息中间件通常支持多种消息格式,如JSON、XML等,开发人员需要根据具体的情况选择合适的格式。
其次,要注意消息的生产者和消费者之间的消息订阅关系。
消息中间件通常支持不同的消息模式,如点对点模式和发布订阅模式,开发人员需要根据具体的业务需求选择合适的模式。
最后,要考虑消息中间件的性能和可靠性。
Java中的消息中间件框架有哪些消息中间件是一种用于分布式系统中处理消息传递的软件框架。
在Java开发中,有许多流行的消息中间件框架可供选择。
本文将介绍一些常用的Java中的消息中间件框架。
一、ActiveMQActiveMQ是Apache软件基金会的一个开源消息中间件项目,它完全支持JMS规范。
它基于Java语言开发,具有可靠性、可扩展性和高性能的特点。
ActiveMQ支持多种通信协议,包括传统的OpenWire协议、AMQP、MQTT和Stomp等。
此外,它还提供了一些高级特性,如消息持久化、消息事务、消息过滤和消息选择器等。
二、RabbitMQRabbitMQ是一个流行的开源消息中间件系统,它采用Erlang语言编写,能够在分布式环境中提供可靠的消息传递机制。
RabbitMQ支持AMQP协议,并且有丰富的特性,例如消息持久化、发布/订阅模式、消息路由、负载均衡和消息确认等。
此外,RabbitMQ还支持插件机制,可以方便地扩展其功能。
三、KafkaKafka是由LinkedIn开发的一个高性能、分布式的消息队列系统,用于大规模实时数据处理。
它采用Java编写,并具备高吞吐量、可持久化、数据压缩和水平扩展等特点。
Kafka的核心概念是topic、partition和offset,它们共同组成了一个可靠的、分布式的发布/订阅模型。
Kafka还支持流处理和批处理,可以满足不同场景下的需求。
四、RocketMQRocketMQ是阿里巴巴开源的一款分布式消息中间件系统,具有高可用性、高性能和高扩展性。
它采用Java语言编写,支持消息的可靠传输和顺序传输。
RocketMQ提供了丰富的功能,包括消息的广播和集群模式、批量发送和消费、消息的定时和延时等特性。
同时,RocketMQ还提供了方便的管理控制台,可用于监控和管理消息的生产和消费。
五、ActiveMQ ArtemisActiveMQ Artemis是一个高性能的、分布式的消息中间件系统,它是ActiveMQ的后续版本。
消息中间件原理消息中间件是一种用于不同应用程序之间进行通信的软件。
它可以帮助应用程序在分布式系统中进行异步通信,从而实现解耦和提高系统的可伸缩性。
消息中间件的原理是基于消息传递模式,它将消息从一个应用程序传递到另一个应用程序,从而实现应用程序之间的通信和协作。
消息中间件的原理主要包括消息传递、消息队列和消息路由。
首先,消息传递是消息中间件的核心原理,它通过将消息从一个发送者传递到一个或多个接收者来实现应用程序之间的通信。
这种消息传递可以是同步的,也可以是异步的,这取决于应用程序的需求。
通过消息传递,应用程序可以实现解耦,即发送者和接收者之间不需要直接进行通信,它们只需要将消息发送到消息中间件,由消息中间件负责将消息传递给接收者。
其次,消息队列是消息中间件实现异步通信的重要手段。
消息队列是一种存储消息的数据结构,它可以暂时存储消息并按照一定的规则进行管理和处理。
通过消息队列,发送者可以将消息发送到队列中,而接收者则可以从队列中获取消息进行处理。
这种异步通信可以提高系统的可伸缩性,因为发送者和接收者之间的通信不再是实时的,它们可以根据自己的处理能力和负载情况进行消息的发送和接收,从而实现系统的平稳运行。
最后,消息路由是消息中间件实现消息传递的关键。
消息路由可以将消息从发送者传递到接收者,并且可以根据一定的规则和条件对消息进行过滤和路由。
通过消息路由,消息中间件可以实现消息的可靠传递和负载均衡,从而保证系统的稳定性和可靠性。
消息路由还可以根据消息的内容和属性将消息进行分类和分发,从而实现消息的多路复用和选择性接收。
综上所述,消息中间件的原理是基于消息传递、消息队列和消息路由的。
它通过这些原理实现应用程序之间的异步通信,从而实现解耦和提高系统的可伸缩性。
消息中间件在分布式系统和微服务架构中具有重要的作用,它可以帮助应用程序实现高效的通信和协作,从而提高系统的性能和可靠性。
希望本文对消息中间件的原理有所帮助,谢谢阅读!。
中间件的分类和功能应用场景中间件是一种位于操作系统和应用程序之间的软件,它具有丰富的分类和功能应用场景。
本文将围绕中间件的分类和功能应用场景展开阐述。
一、中间件的分类1. 消息中间件:消息中间件是一种用于实现应用程序之间异步通信的中间件。
它可以将消息发送者和接收者解耦,提高系统的可靠性和可扩展性。
消息中间件常见的应用场景包括分布式系统、微服务架构、异步任务处理等。
2. 缓存中间件:缓存中间件是一种将数据存储在内存中,提供高速数据访问的中间件。
它可以减轻数据库负载,加快数据读写速度,并提供数据的高可用性。
缓存中间件常见的应用场景包括网站加速、数据缓存、分布式锁等。
3. 反向代理中间件:反向代理中间件是一种将客户端的请求转发到多个服务器上的中间件。
它可以实现负载均衡、高可用性和安全性。
反向代理中间件常见的应用场景包括网站负载均衡、HTTPS加密传输、请求过滤等。
4. 分布式计算中间件:分布式计算中间件是一种将任务分解并分布到多台计算机上进行并行计算的中间件。
它可以提高计算效率、减少计算时间,并实现大规模数据处理。
分布式计算中间件常见的应用场景包括大数据分析、机器学习训练、科学计算等。
5. 服务网格中间件:服务网格中间件是一种用于管理和控制微服务架构中服务间通信的中间件。
它可以提供服务发现、负载均衡、故障恢复等功能,简化微服务架构的开发和维护。
服务网格中间件常见的应用场景包括微服务架构、容器编排等。
二、中间件的功能应用场景1. 异步消息传递:消息中间件可以实现异步消息传递,将消息发送者和接收者解耦。
它常用于分布式系统中,可以提高系统的可靠性和可扩展性。
例如,电商网站的订单系统可以将订单消息发送到消息中间件,然后由库存系统和物流系统异步消费这些消息,实现订单处理的解耦和异步化。
2. 数据缓存:缓存中间件可以将数据存储在内存中,提供高速数据访问。
它常用于加速网站访问、减轻数据库负载,提高系统的响应速度。
例如,电商网站的商品信息可以缓存在缓存中间件中,减少对数据库的查询,提高用户访问速度。
分布式消息中间件在跨多个服务间的数据传递中的应用随着云计算和分布式架构的发展,大型系统越来越常见,并且由多个服务组成。
在这种情况下,服务之间的数据传递变得尤为重要。
为了高效地进行数据传递,分布式消息中间件成为了一种广泛应用的解决方案。
本文将探讨分布式消息中间件在跨多个服务间的数据传递中的应用。
一、分布式消息中间件的概述分布式消息中间件是一种可靠的异步通信机制,它可以在不同的服务之间传递消息。
它的核心思想是将数据发送方和接收方解耦,实现了异步处理和解耦合。
分布式消息中间件提供了几个重要的概念和功能,包括消息队列、消息发布订阅和消息路由等。
二、分布式消息中间件的优势1. 异步处理:分布式消息中间件可以将消息发送方和接收方解耦,实现异步处理。
发送方只需将消息发送到消息队列中,无需考虑接收方的状态,从而提高系统的响应速度和性能。
2. 高可靠性:分布式消息中间件具有较高的可靠性。
它采用了持久化存储和多副本备份等机制,确保消息的可靠传递。
即使在消息中间件出现故障的情况下,消息也不会丢失。
3. 解耦合:分布式消息中间件实现了发送方和接收方的解耦合。
发送方只需将消息发送到消息队列中,而不需要了解接收方的具体逻辑。
这种解耦合的设计方式简化了系统的复杂性。
三、分布式消息中间件的应用场景1. 异步通信:分布式消息中间件适用于异步通信的场景,例如订单提交后的异步通知,实现订单的后续处理。
2. 流量削峰:在大规模系统中,流量的突发性增长可能会对系统造成压力。
分布式消息中间件可以用于平滑流量,将压力分散到不同的服务上。
3. 日志收集:在分布式系统中,日志的收集和分析是非常重要的。
分布式消息中间件可以用于收集和传递日志消息,方便后续的分析和调试。
4. 事件驱动架构:分布式消息中间件可以支持事件驱动的架构。
服务可以发布事件,其他服务可以订阅事件并进行处理,从而实现松耦合和可扩展性。
四、分布式消息中间件的实现与选择目前市场上有多种分布式消息中间件可以选择,例如Apache Kafka、RabbitMQ和RocketMQ等。
消息中间件术语消息中间件(Messaging Middleware)是指用于不同应用程序或组件之间进行通信和传递消息的软件工具。
它充当了应用程序之间的桥梁,使得它们可以高效地进行信息交流和协作。
消息中间件通过提供一种异步、可靠和可扩展的通信机制,帮助不同的应用程序实现解耦和可靠性。
消息中间件的核心概念包括消息、生产者、消费者和代理。
消息是信息的载体,可以是文本、对象或二进制数据。
生产者是消息的发送者,负责将消息发送到消息中间件。
消费者是消息的接收者,负责从消息中间件中获取消息并进行处理。
代理是消息中间件的核心组件,负责接收、存储和转发消息。
消息中间件的一个重要特性是异步通信。
在传统的同步通信方式中,发送者和接收者必须同时在线才能进行通信,这对于分布式系统来说是一种限制。
而异步通信则解决了这个问题,发送者和接收者可以分别独立地进行操作,通过消息中间件来传递消息。
这种方式可以提高系统的灵活性和可伸缩性。
另一个重要特性是可靠性。
消息中间件通常会提供消息持久化机制,即使在消息发送或接收过程中出现故障,消息也能够得到保存并在故障恢复后重新发送。
这种机制可以确保消息的可靠传递,避免消息的丢失或重复处理。
消息中间件还可以实现发布-订阅模式(Publish-Subscribe),这是一种常见的消息传递模式。
在发布-订阅模式中,生产者将消息发布到主题(Topic)上,而多个消费者可以订阅这个主题并同时接收消息。
这种模式可以实现一对多的消息传递,适用于广播和通知场景。
除了发布-订阅模式,消息中间件还支持点对点模式(Point-to-Point)。
在点对点模式中,生产者将消息发送到队列(Queue)中,而消费者通过从队列中获取消息来接收。
这种模式适用于任务分发和负载均衡等场景。
消息中间件的另一个重要应用是事件驱动架构(Event-Driven Architecture)。
在事件驱动架构中,系统的各个组件通过发送和接收事件来进行协作。
大数据消息中间件技术要求与测试方法大数据消息中间件技术是大数据领域中重要的基础设施之一,用于解决大规模数据处理和传输时的通信问题。
它可以实现高效、可靠的数据传输,并提供灵活的消息处理能力。
本文将从技术要求和测试方法两个方面来介绍大数据消息中间件技术。
一、技术要求1. 高吞吐量:大数据场景下,数据量庞大,对消息中间件的吞吐能力有较高要求。
它应能够支持并发处理大量的消息请求,保证高效的数据传输。
2. 低延迟:在大数据处理过程中,实时性是一个重要的指标。
消息中间件应能够在短时间内将消息传输到目的地,以满足实时数据处理的需求。
3. 可靠性:大数据消息中间件需要保证消息的可靠传输,即使在网络不稳定或部分节点宕机的情况下,也能保证消息的完整性和一致性。
4. 扩展性:大数据处理通常需要大规模的集群来支持,消息中间件应具备良好的扩展性,能够适应不断增长的数据处理需求。
5. 容错性:由于大数据处理过程中可能存在单点故障,消息中间件需要具备容错机制,能够快速恢复故障节点,并保证系统的稳定运行。
6. 高并发性:大数据处理通常需要并发处理大量的数据,消息中间件应能够支持高并发的消息传输和处理能力。
7. 数据安全性:大数据中可能存在敏感数据,消息中间件需要提供数据加密和访问控制等安全机制,确保数据的安全性和隐私保护。
二、测试方法1. 性能测试:通过模拟大规模数据流量,测试消息中间件的吞吐量、延迟和并发处理能力。
可以使用压力测试工具,如Apache JMeter,模拟多个并发请求,观察系统的性能指标。
2. 可靠性测试:通过模拟网络故障、节点故障等场景,测试消息中间件的容错能力和消息的可靠传输。
观察系统在故障情况下的恢复能力和数据一致性。
3. 扩展性测试:通过增加节点数或增大数据量,测试消息中间件的扩展性能力。
观察系统在扩展时的负载均衡和性能表现。
4. 安全性测试:测试消息中间件的数据加密和访问控制等安全机制。
可以通过模拟攻击、漏洞扫描等方式,测试系统的安全性和防护能力。
消息中间件的使用场景
消息中间件被广泛应用于各种场景中,主要包括以下四种典型场景:
1. 异步处理:在传统的串行和并行方式中,任务的执行顺序是固定的,而在消息中间件的帮助下,可以将一些不需要立即响应的任务转化为消息,异步地发送给消费者进行处理。
这种方式能够显著提高系统的吞吐量。
2. 应用解耦:当一个系统需要和多个其他系统进行交互时,可以使用消息中间件作为中介。
例如,系统A需要向系统B和系统C 发送消息,为了降低系统A与系统B和系统C之间的耦合度,我们可以让系统A将消息发送给消息中间件,然后由消息中间件将消息转发给系统B和系统C。
3. 流量削锋:在高并发的场景下,消息中间件可以缓冲大量的请求,避免因为瞬间流量过大而导致系统崩溃。
4. 消息通讯:在那些需要进行大量数据传输的应用中,如秒杀活动、抢购、邮件发送、电话短信等,消息中间件都发挥了重要的作用。
信息技术中间件消息中间件技术要求1 范围本文件明确了消息中间件的技术参考模型,规定了部署管理、存储管理、传输管理、消息管理、消息服务、应用开发、运维管理、可靠性、安全管理和易用性等方面的技术要求。
本文件适用于消息中间件软件的开发、部署和测试。
2 规范性引用文件本文件无规范性引用文件。
3 术语和定义下列术语和定义适用于本文件。
消息中间件 message-oriented middleware通过队列和消息传递机制支持分布式系统实现消息传递与集成的软件。
[来源:GB/T 33847-2017,2.8]消息 message不同的应用程序(进程或线程)之间传递或交换的信息。
注:消息的格式及内容,由该消息的发送者及接收者协商而定。
消息发送者 message sender消息生产者 message producer产生消息的实体。
注:实体可以是应用程序、进程或线程。
消息接收者 message receiver消息消费者 message consumer接收消息的实体。
注:实体可以是应用程序、进程或线程。
队列 queue存储消息的缓冲区实体。
消息优先级 message priority根据消息的紧急程度,为消息设置不同的优先等级。
注:消息可以有不同的优先级。
在消息的发送和接收处理过程中,高优先级的消息可得到优先处理。
消息有效期 expiration of message产生消息时,应用设定的消息属性,指定了消息可被消费的期限。
在有效期内的消息可被应用消费。
死信 dead letter进入队列但不能完成传递过程的消息。
注:如目的队列不存在的消息或有效期时间到的消息等。
事件 event消息中间件在消息的传递过程中产生的动作。
注:事件可由用户通过配置来定义。
主题 topic一种向多个消息订阅者分发消息的机制。
发布者根据指定的主题名发布消息,订阅者通过主题名订阅消息。
4 缩略语下列缩略语适用于本文件。
AMQP 高级消息队列协议(Advanced Message Queuing Protocol)API 应用编程接口(Application Programming Interface)CPU 中央处理器(Central Processing Unit)HTTP 超文本传输协议(Hypertext Transfer Protocol)IP 互联网协议(Internet Protocol)IPv4 网际协议版本4(Internet Protocol Version 4)IPv6 网际协议版本6(Internet Protocol Version 6)JDK Java开发工具包(Java Development Kit)JMS Java消息服务(Java Message Service)MQTT 消息队列遥测传输(Message Queuing Telemetry Transport)RoCE 超融合以太网远程直接数据存取(RDMA over Converged Ethernet)SSL 安全套接层(Secure Sockets Layer)STOMP 流文本定向消息协议(Streaming Text Orientated Message Protocol)TCP 传输控制协议(Transfer Control Protocol)TLS 传输层安全性协议(Transport Layer Security)UDP 用户数据报协议(User Datagram Protocol)5 消息中间件技术参考模型消息中间件技术参考模型见图1。
大数据消息中间件技术要求与测试方法大数据消息中间件技术是指在大数据系统中,用于传递和处理消息的一种软件工具或服务。
它在大数据系统中起到了连接各个模块和组件、协调任务和数据流的重要作用。
本文将从技术要求和测试方法两个方面来介绍大数据消息中间件技术。
一、技术要求1. 高吞吐量:大数据系统中产生的数据量通常非常庞大,因此消息中间件需要具备高吞吐量的能力,能够快速处理大量的消息。
2. 低延迟:大数据系统通常需要实时或近实时的数据处理和分析,因此消息中间件需要具备低延迟的能力,能够快速传递消息并将其投递给相应的模块或组件。
3. 可靠性:大数据系统中的数据非常重要,因此消息中间件需要具备高可靠性的能力,能够确保消息的不丢失不重复,并能够处理消息发送和接收过程中可能出现的异常情况。
4. 可扩展性:大数据系统通常需要处理的数据规模会不断增大,因此消息中间件需要具备良好的可扩展性,能够方便地扩展到更多的节点和集群,以应对不断增长的数据处理需求。
5. 一致性:大数据系统中的各个模块和组件需要协同工作,因此消息中间件需要具备一致性的能力,能够确保消息的顺序和一致性,以避免数据处理过程中出现错误或不一致的情况。
二、测试方法1. 吞吐量测试:可以通过模拟大量的消息发送和接收,并测量消息中间件在单位时间内能够处理的消息数量来测试其吞吐量。
可以使用压力测试工具来进行测试,并观察系统的响应时间和吞吐量指标。
2. 延迟测试:可以通过发送一条消息并测量其从发送到接收所经过的时间来测试消息中间件的延迟。
可以在不同网络环境下进行测试,并观察延迟时间的变化。
3. 可靠性测试:可以通过发送大量的消息,并模拟消息发送和接收过程中的异常情况,如网络断开、节点故障等,来测试消息中间件的可靠性。
可以观察消息中间件是否能够正确处理异常情况,并保证消息的不丢失和不重复。
4. 扩展性测试:可以通过增加节点或集群的数量,并观察系统的性能和吞吐量指标来测试消息中间件的扩展性。
消息中间件DotNetMQ原文出处:/Articles/193611/DotNetMQ-A-Complete-Message-Queue-System-f or-NET#WhyNewMessBroker介绍在这篇文章中,我将介绍一个新的、独立的开源消息队列系统,该系统是创建在c#和.NET framework 3.5。
DotNetMQ message broker,有几个功能,包括保证交付,路由、负载平衡、服务器图……等等。
我将首先解释消息的概念和message brokers。
然后我将检查DotNetMQ 是什么以及如何使用它。
什么是消息消息传递是一种异步通信方式在相同或不同的机器上运行的应用程序的可靠传递。
项目通过发送数据包的数据消息传达给对方。
消息可以是一个字符串,一个字节数组,一个对象……等等。
通常情况下,发送者(生产商)计划创建一个消息并将消息队列和接收机(消费者)计划从队列中获取消息和处理它发送方和接收方的程序不需要同时运行,因为消息是一个异步的过程。
这就是所谓的松散耦合的沟通。
另一方面,Web服务方法调用(远程方法调用)是一种紧耦合和同步通信(可用应用程序必须运行和有效期间完整的通讯;如果脱机或Web服务方法调用期间发生错误,客户端应用程序变得异常)图- 1:简单的两个应用程序消息传递在上面的图中,两个应用程序通过消息队列以松散耦合的方式进行通信。
如果接收方使用消息慢于发送方生成它,消息的数量将会在队列里增加。
同时,接收方可以离线当发送方还在发送消息。
在这种情况下,接收方在线时会接收到消息(当它加入队列时)消息队列通常提供消息代理。
Message Broker是一个独立的应用程序(服务),其他应用程序连接和发送/接收消息。
消息代理负责存储直到接收器接收到消息。
Message Broker可以跨机器路由消息传递消息到目标应用程序,直到接收方正确地处理它。
Message Broker有时被称为一个面向消息的中间件(MOM)或者只是消息队列(MQ)什么是DotNetMQ是一个开源的消息代理,有如下特性:持续或非持久性消息保证交付的持久消息甚至系统崩溃自动和手动路由信息的定制机图支持多个数据库(MS SQL Server, MySQL, SQLite、基于内存的存储)支持不存储,直接发送消息传递方式支持请求/应答消息传递方式易于使用的客户端库与DotNetMQ通信消息代理。
内置框架可以轻松地构建RMI服务消息队列。
支持ASP交付消息。
净Web服务的基于gui的管理和监控工具。
易于安装、管理和使用。
完全使用c#(使用。
net 3.5)我喜欢名字DotNetMQ MDS首先创建它时(消息传递系统)。
因为它是设计不仅仅是一个消息队列,但也作为一个系统,直接传递消息的应用程序和环境,提供了一个框架来构建应用程序服务我称之为DotNetMQ因为它完全开发使用。
.net和DotNetMQ名称更有纪念意义。
所以不是原来的名字(和内部项目名称)是MDS和前缀是MDS的应用程序有许多类。
安装和运行DotNetMQ解压缩binaries压缩包到C:\Program Files\DotNetMQ\ 路径下,运行INSTALL_x86.bat文件,64位系统运行INSTALL_x64.bat文件。
DotNetMQ应用程序第一个应用程序最简单的,我认为有两个控制台应用程序运行在同一台机器上(事实上(将在本文的后面我们将看到)没有显著差异,如果应用程序在不同的机器上,唯一的区别是正确设置目的地的名称服务器的消息)Application1: 从用户得到一个字符串消息并将其发送给Application2Application2: 将传入消息写入控制台屏幕上注册应用程序DotNetMQ我们需要注册应用程序一旦DotNetMQ使用它们。
这是一个非常简单的过程。
DotNetMQ经理(MDSManager运行。
exe DotNetMQ程序文件夹中(默认值:C:\ program Files \ DotNetMQ \)),并打开应用程序从应用程序菜单列表。
点击添加新的应用程序为应用程序按钮,输入一个名称Application1和Application2应用程序添加到DotNetMQ如上所述。
最后,应用程序必须像下面的列表这个屏幕显示了应用程序DotNetMQ注册。
连接的客户列显示应用程序的实例的计算,目前DotNetMQ相连。
不需要重启DotNetMQ因为这个屏幕的变化Application1创建一个新的控制台应用程序名称Application1 MDSCommonLib在Visual Studio并添加一个引用。
连接到DotNetMQ dll提供必要的类。
然后编写以下代码的程序。
cs文件:在创建MDSClient对象时,我们通过连接到DotNetMQ的应用程序名称。
有了这个构造函数,我们连接到DotNetMQ在本地服务器上(127.0.0.1)默认端口号(10905)。
重载的构造函数可以用来连接到另一台服务器和端口MDSClient CreateMessage方法返回一个IOutgoingMessage类型的对象。
MessageData属性是实际的数据发送到目标应用程序。
这是一个字节数组。
我们将用户输入的文本转换为一个字节数组使用UTF8编码。
TheDestinationApplicationName和DestinationServerName属性用于设置消息的目的地址,如果我们不指定目标服务器,它是假定本地服务器。
最后,我们发送消息Application2创建一个新的控制台应用程序名称Application2在Visual Studio,MDSCommonLib添加一个引用。
dll和编写下面的代码:创建类似于Application1 MDSClient对象但Application2应用程序名称。
接收消息的应用程序,它需要注册MDSClient MessageReceived事件。
然后我们连接到DotNetMQ并保持联系,直到用户按下Enter键。
当一个消息发送到Application2,MDSClient_MessageReceived方法处理事件。
我们得到的消息从消息属性MessageReceivedEventArgs。
IIncomingMessage消息的类型。
IIncomingMessage MessageData属性包含实际的消息由Application1发送的数据。
因为它是一个字节数组,我们将它转换为字符串使用use UTF8编码。
我们写发送的消息文本Application1到控制台屏幕上。
处理传入消息之后,它需要响应消息。
这意味着消息正确地接收并正确地处理。
DotNetMQ然后从消息队列删除消息。
我们也可以拒绝一个消息使用拒绝方法(如果我们不能处理消息在错误情况下)。
在这种情况下,消息就回消息队列,稍后将发送到目标应用程序(或者它将被发送到另一个实例的Application2在同一台服务器上如果存在的话)。
这是一个强大的机制DotNetMQ系统。
因此,保证消息不能丢失,是绝对处理。
如果你不承认或拒绝消息,它假定为拒绝。
所以,即使你的应用程序崩溃,你的消息发送回您的应用程序如果你运行多个实例Application2,哪一个会接收消息吗?在这种情况下,DotNetMQ顺序传递消息应用程序。
因此,您可以创建多发送方/接收方系统。
收到一条消息时只有一个实例的应用程序(应用程序接收不同的消息)。
DotNetMQ提供所有功能和同步消息的传输规则属性StoreAndForward:这是默认传输规则。
持久消息,不能丢失,保证交付。
如果发送方法不抛出异常,然后收到的消息是正确DotNetMQ并存储在数据库中。
它是存储在数据库中,直到目标应用程序接收和承认它NonPersistent:消息不存储在数据库中。
这是最快的方式发送消息。
一个消息丢失只有DotNetMQ服务器停止DirectlySend:这是一个专属的特性。
这种类型的消息直接发送到应用程序。
发送方应用程序被阻塞,直到接收方承认一个消息。
所以,如果发送方不得到任何异常调用发送方法,这意味着消息接收方应用程序正确地接受并承认。
如果出现错误,发送一条消息,接收方离线,或接收方拒绝消息,发送方发送的异常的方法。
这个规则正确工作,即使应用程序是在不同的服务器上(即使有许多服务器在应用程序之间)MDSClient 的CommunicationWay 属性默认情况下用MDSClient能发送接收消息(CommunicationWays.SendAndReceive),如果应用程序不需要接收消息,需要设置将属性设置为为(CommunicationWays.Send()),属性的改变要在连接到DotNetMQ和通讯之前。
MDSClient 的ReConnectServerOnError属性默认情况下,MDSClient自动重连到DotNetMQ,每当重启DotNetMQ时不需要重启应用程序来连接到DotNetMQ,可以设置ReConnectServerOnError属性为false来禁用自动重连功能。
MDSclient的AutoAcknowledgeMessages属性默认情况下,你必须在MessageReceived事件中明确应答消息。
否则他被认为是拒绝如果你想用oppisite这种方法,你必须设置AutoAcknowledgeMessages属性为true。
在这种情况下,如果你MessageReceived事件处理程序不抛出异常或者你不明确应答/拒绝消息,它是自动应答(如果抛出一个异常,消息被拒绝)。
配置DotNetMQ在两个地方可以配置DotNetMQ,用MDSSettings.xml 文件中或者是在DotNetMQ Manager (window forms 应用程序中)。
在这里,我将显示两种方法,有一些配置需要重启DotNetMQ 而另一些则不需要。
DotNetMQ的请求/应答消息传递方式在大多数情况下,一个应用程序发送消息到另一个应用程序,并得到一个响应消息。
DotNetMQ 内置支持这种类型的消息。
用一个服务,用来查询库存状况。
有两种类型的消息一个简单库存代码显示如下:库存服务器侦听传入StockQueryMessage对象和发送一个StockQueryResultMessage给发送者。
很简单,我没有从数据库选择库存。
创建一个响应消息的CreateResponseMessage()方法的传入消息。
最后,将消息响应发送后确认。
现在,我将展示一个简单的库存客户端代码从服务器获取库存信息在上面的示例中,选择TransmitRule作为样本使用非持久的显示。