MQ服务

Posted weishenme

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MQ服务相关的知识,希望对你有一定的参考价值。

MQ

(IBM MQ)


MQ传递主干,在世界屡获殊荣。 它帮您搭建企业服务总线(ESB)的基础传输层。IBM WebSphere MQ为SOA提供可靠的消息传递。它为经过验证的消息传递主干, 全方位、 多用途的数据传输, 并帮助您搭建企业服务总线的传输基础设施。
消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过写和检索出入列队的针对应用程序的数据(消息)来通信,而无需专用连接来链接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求。
IBM WebSphere MQ 支持两种不同的应用程序编程接口:Java 消息服务(JMS)和消息队列接口(MQI)。在 IBM WebSphere MQ 服务器上,JMS 绑定方式被映射到 MQI。应用程序直接与其本地队列管理器通过使用 MQI 进行对话,MQI 是一组要求队列管理器提供服务的调用。MQI 的引人之处是它只提供 13 次调用。这意味着对于应用程序编程员它是一种非常易于使用的接口,因为大部分艰苦工作都将透明完成的。
IBM WebSphere MQ 产品支持应用程序通过不同组件如处理器、子系统、操作系统以及通信协议的网络彼此进行通信。
 
 
 

功能

编辑
· 跨任何商业IT系统连接应用程序和Web服务, 提供完整的JMS(Java消息服务)支持 [1]  , 包括发布-订阅。
· 对Web服务的整合化支持。
· 基于Eclipse的新工具—MQ Explorer, 适用于Windows和Intel(x86), 支持整个消息传递主干的远程和安全配置。
· WebSphere MQ V6.0.2增强了JMS和安全性, 构建在WebSphere MQ V6.0中引入的新配置工具之上, 该工具以新Eclipse插件的形式提供, 可增强您的MQ Explorer控制台。
· 与WebSphere Application Server的消息传递服务无缝互操作。
· 支持行业标准安全套接字层(Secure Sockets Layer, SSL)安全性, 并提供扩展安全版本来获得高级安全特性。
· 支持推进现有FTP基础设施, 确保通过WebSphere MQ进行可靠、 安全的文件传输。
· 支持的操作系统: AIX、 HP Unix、 i5/OS、 Linux、 Sun Solaris、 Windows、 z/OS。
 
=====================================================================================================================================================================================
 

举例:

比如登陆系统,在登陆之后需要调用短信系统给用户发短信说已经登陆,同时还需要调用日志系统记录登陆日志,需要调用积分系统对登陆签到的积分进行增加 等等等。

 

这种情况下,登陆系统和日志系统,短信系统,积分系统等等 强耦合,其中存在可能调用失败,信息丢失等风险,同时会提高系统复杂度。

比如说登陆之后调用日志系统失败,那么该次登陆的日志信息就会丢失,无法再找回。

而且顺序执行,会导致登陆系统运行效率低。

 

那么如果使用消息中间件,登陆之后只需要将任务推入到消息队列中,就不用去管了。其他系统则从队列中去获取任务。

 

实现解耦和异步调用 (异步是相对于同步而言,同步是就等待,当系统执行某个任务的时候,一定要等到该任务结束,系统才会继续往下执行,异步则不等待。)

同时还有可以实现横向拓展 安全可靠优点

 

2.常见MQ的类型

activeMQ 对java支持良好,缺点是对其他语言支持不够友好,适合中小企业系统

rabbitMQ 对java支持良好,对其他语言也支持良好,跨平台,语言无关

kaffka 日志消息中间件 支持大数据场景

 

 

3.JMS规范

MQ实现参照了jms规范,(规范就是一种约定)

该规范中包括

提供者:实现jms规范的中间件服务器

客户端:发送或者接受消息的应用程序

 

生产者/发布者:创建并发送消息的客户端

消费者/订阅者:接受并处理消息的客户端

 

消息:应用程序之间传递的内容

消息模式:在客户端之间传递消息的方式,jms中定义了主题和队列两种模式

 

主题模式:

假如发布者发布了100条消息,那么如果有n个订阅者,每个订阅者都可以获取到100条消息。即订阅者可以获取到所有的消息(但如果订阅是在主题发布消息之后,则获取不到任何消息,只能获取到订阅时间之后主题的发布的消息,比如说A订阅了B, B发布了消息,C再订阅了B,那么只有a能够获取到消息,C不能,因为它的订阅行为发生在B发布消息之后)

 

队列模式:

假如生产者发送了100条消息,如果有n个消费者,那么每个订阅者加起来获取到的消息总数是100。

没有时间上限制。只要队列中有消息,消费者可以任意时间去取消息,一个消息只能被一个消费者消费。

 

 

4.jms约定的接口

ConnectionFactory 获取与MQ服务连接的工厂类

 

Connection 与MQ服务的连接, 由ConnectionFactory 创建

 

Session 会MQ服务的会话 由Connection 创建

 

MessageProducer 消息生产者,由Session 创建

MessageConsumer 消息消费者 由Session创建

Message 消息,由Session创建

 

Desination 消息的目的地

 
---------------------
(部分内容来源于百度百科)
来源:CSDN
原文:https://blog.csdn.net/qq_20009015/article/details/81409346

以上是关于MQ服务的主要内容,如果未能解决你的问题,请参考以下文章

使用 C++ API 将 mq 客户端连接到具有加密通道的 mq 服务器

聊聊mq的使用场景

如何保证MQ消息必达

MQ与webservice的区别,MQ的区别

RabbitMQ 服务异步通信 -- 初识MQ(同步通信和异步通信MQ几种常见MQ的对比)RabbitMQ安装和介绍

微服务实用篇4-消息队列MQ