zoukankan      html  css  js  c++  java
  • IBM MQ

     WebSphere MQ 概念

       1. 一种中间件产品,实现了消息队列框架,介于应用和操作系统之间,相关应用的基础平台。

       2. 以实现应用系统在异构的操作系统平台之间稳定可靠地传递,交换重要的数据和信息,确保消息不丢失不复传

       3. 提供了强大、 安全、 稳定的消息传递主干,可帮助搭建企业服务总线(ESB)的基础传输层。

       4. 实现 MQI(Message Queue Interface) 接口,实现异步通信。消息队列接口为程序提供了一种异步通信方式。一个程序以一个队列作为中转与另一个程序相互通信,这个队列相对于该程序而言既可是本地的也可以是远程的。当程序A需要和程序B通信时,A只需PUT一条消息到一个和B相联系的队列上,程序A然后可以干别的事。它似乎感觉不到通信的发生,通信以及对通信错误的恢复是由队列管理完成的

    WebSphere MQ主要对象

    消息 数据的传输载体,与应用系统交互的数据均被包装成消息。

    队列  是用于存储消息的数据结构。按功能可以分为本地队列、远程队列、传输队列、模板队列、别名队列、死信队列等等。

    队列管理器 在WebSphere MQ中队列管理器是基本的软件系统,队列管理器可看成是队列和其他对象的容器

    通道 是一种提供从一个队列管理器到另一个队列管理器的通信路径。它又叫消息通道,用在分布式的队列把消息从一个队列管理器发送到另一个队列管理器。

     按照定义可以分为发送通道(Sender)、接收通道(Receiver)、服务器通道(Server)、请求器通道(Requester)等。

     MQSC命令 是用来管理队列管理器对象,包括队列管理器本身、通道、队列和进程定义。 可以使用 runmqsc 向队列管理器发出 MQSC 命令。

     IBM WebSphere MQ 支持两种不同的应用程序编程接口:Java 消息服务(JMS)和消息队列接口(MQI)。在 IBM WebSphere MQ 服务器上,JMS 绑定方式被映射到 MQI。如图 3 所示,应用程序直接与其本地队列管理器通过使用 MQI 进行对话,MQI 是一组要求队列管理器提供服务的调用。MQI 的引人之处是它只提供 13 次调用。这意味着对于应用程序编程员它是一种非常易于使用的接口,因为大部分艰苦工作都将透明完成的。

    消息通道代理程序(MCA) 每个通道定义都属于特定队列管理器,队列管理器可具有同一类型或不同类型的几个通道。通道的每一端是程序消息通道代理程序(MCA)。在通道的一端,调用方MCA从传输队列取出消息并通过通道发送它们。在通道的另一端,响应方MCA接收这些消息并将它们传递至远程队列管理器。

    调用方 MCA 可与发送方通道、服务器通道或请求方通道关联。响应方 MCA 可与消息通道的任何类型关联。

    进程 - 定义和标识响应 WebSphere MQ 队列管理器上的触发器事件的应用程序;进程与MQ的触发器机制相关;指MQ服务器的一个对象,注意和操作系统的进程概念区分。

    侦听器 - 为MQ服务器侦听某个TCP 端口。对于某个MQ服务器,当允许客户端或者远程的队列管理器通过通道连接到本地的队列管理器时,必须启动侦听器,监听本地的某个TCP端口,默认端口号为1414。 

    上图显示了 IBM WebSphere MQ 编程的原理。

    第一步是让应用程序与队列管理器连接。它通过 MQConnect 调用来进行此连接。

    下一步使用 MQOpen 调用为输出打开一个队列。

    然后应用程序使用 MQPut 调用将其数据放到队列上。

    要接收数据,应用程序调用 MQOpen 调用打开输入队列。应用程序使用 MQGet 调用从队列上接收数据。

    开发步骤:

    建立MQ客户端应用上下文环境

    连接队列管理器(通过 MQConnect 调用来进行此连接)

    打开队列

    放入消息

    q.put(msg);

    关闭队列

    q.close();   

    断开队列管理器连接

    消息ID

       两个队列管理器生成的消息ID,是会重复的,这种几率比较小。

       若你有多台机器向一台机器发送消息,建议根据本地网卡唯一标识自定义

       生成消息的ID。

       获取消息时,new 一个MQMessage对象,将消息ID字符转化为byte数组,

       放入messageId,然后通过mqQueue.get(mqMsg, gmo)就能获取到指定的消息。

       当消息ID重复时,只能按优先级或消息的次序,优先获取一条消息。

    安装WebSphere MQ

    https://cloud.tencent.com/developer/article/1124979

    https://cloud.tencent.com/developer/article/1124981

     MQ选型

    https://blog.csdn.net/rockstar541/article/details/83901436

    http://publib.boulder.ibm.com/tividd/td/ITAMFBI/SC23-4831-01/zh_CN/HTML/ADM51mst02.htm#wq1

    性能调优

    https://www.cnblogs.com/tbyang/p/3457440.html

    参考 :

    https://cloud.tencent.com/developer/article/1124977

  • 相关阅读:
    Razor 视图
    可选参数和命名参数
    CPU性能分析工具原理
    从硬件到语言,详解C++的内存对齐(memory alignment)
    谈谈C++的volatile关键字以及常见的误解
    C++11的value category(值类别)以及move semantics(移动语义)
    C++基于范围循环(range-based for loop)的陷阱
    C++模板入门教程(一)——模板概念与基本语法
    自己动手实现深度学习框架-8 RNN文本分类和文本生成模型
    自己动手实现深度学习框架-7 RNN层--GRU, LSTM
  • 原文地址:https://www.cnblogs.com/dingpeng9055/p/11410882.html
Copyright © 2011-2022 走看看