MQ中将消息发送至远程队列的配置

Wesley13
• 阅读 663

MQ****中将消息发送至远程队列的配置

摘自MQ资源管理器帮助文档V7

在开始学习本教程之前,您需要从系统管理员处了解标识网络上接收机器的名称:IP地址、MQ的端口号、队列管理器、接收(远程机器)或者是发送的队列(本地机器)名称

消息传递如图示:

MQ中将消息发送至远程队列的配置 本教程介绍了如何设置一台计算机上的队列管理器 QM_ORANGE 与另一台计算机上的队列管理器 QM_APPLE 之间的消息传递。在第一台计算机上创建的消息被传递到第二台计算机上的队列 Q1(此队列被称为_远程_队列)。

要点: 在本教程中,您将使用创建了队列管理器 QM_APPLE 和本地队列 Q1 的机器作为接收机器。

您将在发送机器上设置队列管理器和队列(远程队列定义和传输队列)。然后定义消息通道。最后,您将把测试消息放入发送机器,并从接收机器上的队列获取该消息。

完成本教程后,您应该基本了解如何使用远程队列定义来设置和使用 WebSphere® MQ 消息传递。

一、 在发送机器上创建队列管理器

二、 在发送队列管理器上创建队列

三、 创建消息通道

四、 将测试消息放入队列

五、 验证是否已发送测试消息

一、在发送机器上创建队列管理器

在发送机器上使用 WebSphere MQ 资源管理器创建队列管理器

无法远程完成此过程。必须在发送机器上本地完成此过程。

  1. 启动 WebSphere MQ 资源管理器。
  2. 在导航器视图中,右键单击队列管理器文件夹,然后单击新建 > 队列管理器 此时会打开创建队列管理器向导。
  3. 在队列管理器名称字段中,输入 QM_ORANGE。
  4. 选中设置为缺省队列管理器复选框。
  5. 单击下一步两次以转至向导的步骤 3。
  6. 确保选中启动队列管理器复选框。
  7. 确保选中自动启动队列管理器复选框。
  8. 单击下一步以转至向导的步骤 4。
  9. 确保选中创建配置用于 TCP/IP 的侦听器复选框。
  10. 如果完成按钮不可用,那么在侦听端口号字段中输入另一个端口号。 如果当前值为 1414,那么尝试输入 1415 或 1416。
  11. 单击完成。

WebSphere MQ 资源管理器的导航器视图中的队列管理器文件夹中会显示表示此队列管理器的图标,并且在您创建队列管理器后,该队列管理器会自动开始运行。

使用 MQSC 创建发送队列管理器

在发送机器上打开命令提示符,然后按照以下步骤操作:

  1. 通过输入以下命令来创建名为 QM_ORANGE 的缺省队列管理器:

crtmqm -q QM_ORANGE

此时会显示消息,告诉您已经创建了队列和缺省 WebSphere MQ 对象。

  1. 通过输入以下命令来启动此队列管理器:

strmqm

此时会显示一条消息,告诉您何时启动了该队列管理器。

  1. 现在,您必须通过输入以下命令来创建侦听器:

runmqlsr -m QM_APPLE -t TCP -p (port number)

注: 如果未使用 -p 参数指定任何端口,那么使用缺省端口 1414,但请注意,不能对发送方和接收方使用相同的端口号,因此,如果其中一个为 1414,那么另一个就应该是 1415。

您现在已经创建了发送队列管理器。下一个任务是在此队列管理器上创建队列。

二、在发送队列管理器上创建队列

使用 WebSphere MQ 资源管理器在发送队列管理器上创建队列

在发送队列管理器上:

  1. 在导航器视图中,展开队列管理器文件夹。
  2. 展开队列管理器 QM_ORANGE。
  3. 右键单击队列文件夹,然后单击新建 > 远程队列定义... 此时会打开新建远程队列定义向导。
  4. 在名称字段中,输入 Q1。
  5. 在远程队列字段中,输入 Q1。 【注:这里新建的远程队列的名称,一定要和远程机器上的队列名称相同,否则消息会发出去,但是远程机器的队列里面收不到消息,如上文提到的的Q1与Q1,或者是如下图的testQ与testQ:MQ中将消息发送至远程队列的配置
  6. 在远程队列管理器字段中,输入 QM_APPLE。
  7. 在传输队列字段中,输入 QM_APPLE。
  8. 单击完成。 您现在已经创建了远程队列定义。
  9. 单击 QM_ORANGE 队列管理器。
  10. 右键单击队列文件夹,然后单击新建 > 本地队列 此时会打开新建本地队列向导。
  11. 在名称字段中,输入 QM_APPLE。
  12. 在用途字段中,选择传输。
  13. 单击完成。 您现在已经在本地机器上创建了传输队列。

内容视图中将会显示新队列 Q1 和 QM_APPLE。

如果内容视图中未显示这些队列,请单击位于内容视图顶部的“刷新”按钮 MQ中将消息发送至远程队列的配置

使用 MQSC 来在发送队列管理器上创建队列

在发送机器上打开命令提示符,然后按照以下步骤操作:

  1. 通过输入以下命令来启动 MQSC:

runmqsc

此时会显示一条消息,告诉您 MQSC 会话已启动。

  1. 通过输入以下命令来定义名为 QM_APPLE 的本地队列:

define qlocal (QM_APPLE) usage (xmitq)

此时会显示一条消息,告诉您何时创建了该队列。

  1. 通过输入以下命令来定义远程队列定义:

define qremote (Q1) rname (Q1) rqmname(QM_APPLE) xmitq (QM_APPLE)

您现在已经在发送队列管理器上创建了队列。下一个任务是创建发送队列管理器和接收队列管理器之间的消息通道。

三、创建消息通道

使用 MQ 资源管理器创建消息通道

  1. 接收队列管理器 QM_APPLE 上,创建通道的接收方端:
    1. 在导航器视图中,展开先前创建的队列管理器 QM_APPLE,然后展开高级文件夹。
    2. 右键单击通道文件夹,然后单击新建 > 接收方通道... 此时会打开新建接收方通道向导。
    3. 在名称字段中,输入 QM_ORANGE.QM_APPLE。
    4. 单击完成。 您现在已经在接收机器上创建了接收方通道。
  2. 发送队列管理器 QM_ORANGE 上,创建通道的发送方端:
    1. 展开先前创建的队列管理器 QM_ORANGE,然后展开高级文件夹。
    2. 右键单击通道文件夹,然后单击新建 > 发送方通道... 此时会打开新建发送方通道向导。
    3. 在名称字段中,输入 QM_ORANGE.QM_APPLE,然后单击下一步。
    4. 在连接名称字段中,输入接收机器的计算机名称或 IP 地址(您应该已经在系统管理员的帮助下获得此信息)。
    5. 在传输队列字段中,输入 QM_APPLE。
    6. 单击完成。
    7. 单击通道文件夹。
    8. 右键单击 QM_ORANGE.QM_APPLE。
    9. 从弹出菜单中,单击启动。
    10. 单击确定。 您现在已经在发送机器上创建了发送方通道。

注: 您不必启动接收方通道,因为它会在您设置发送方通道时自动启动(当设置发送方通道时,您指定了接收方通道的 IP 地址)。

现在,已经在接收队列管理器 QM_APPLE 上创建接收方通道 QM_ORANGE.QM_APPLE,并且已在发送队列管理器 QM_ORANGE 上创建发送方通道 QM_ORANGE.QM_APPLE。此外,您还已经启动发送方通道,这也自动地启动了接收方通道。

使用 MQSC 创建消息通道

接收机器上打开命令提示符,然后按照以下步骤操作:

  1. 通过输入以下命令来启动 MQSC:

runmqsc

此时会显示一条消息,告诉您 MQSC 会话已启动。

  1. 通过输入以下命令来定义接收通道:

define channel (QM_ORANGE.QM_APPLE) chltype (RCVR) trptype (TCP)

此时会显示一条消息,告诉您何时创建了该通道。

  1. 通过输入以下命令来停止 MQSC:

end

将显示一些消息,然后会显示命令提示符。

发送机器上打开命令提示符,然后按照以下步骤操作:

  1. 通过输入以下命令来启动 MQSC:

runmqsc

此时会显示一条消息,告诉您 MQSC 会话已启动。

  1. 通过输入以下命令来定义发送方通道:

define channel (QM_ORANGE.QM_APPLE) chltype (sdr) conname ('con-name') xmitq (QM_APPLE) trptype (tcp)

值 _con-name_是接收方队列管理器的 TCP 地址。

  1. 通过输入以下命令来启动通道:

start channel (QM_ORANGE.QM_APPLE)

  1. 通过输入以下命令来停止 MQSC:

end

将显示一些消息,然后会显示命令提示符。

您现在已经创建了将消息从发送队列管理器 QM_ORANGE 发送到接收队列管理器 QM_APPLE 上的队列 Q1 所需的全部 WebSphere MQ 对象。下一个任务是发送测试消息。

四、将测试消息放入队列

使用 MQ 资源管理器测试消息放入队列

点右键到远程队列上,选择“放入测试消息…”:

MQ中将消息发送至远程队列的配置 在弹出的界面中输入任何消息,点关闭或者是连续输入即可。

使用 MQSC 来将测试消息放入队列

在发送机器(主管队列管理器 QM_ORANGE 的机器)上执行此任务。

使用 amqsput样本程序来将消息放入您创建的队列。

在 Windows®上,缺省情况下样本程序随 WebSphere® MQ 服务器或客户机一起安装。在 Linux®上,需要安装样本程序 RPM。

打开命令提示符,然后按照以下步骤操作:

  1. 启动 amqsput样本程序,如下所示:
    • 在 Linux 上,切换到 /opt/mqm/samp/bin 目录,然后输入命令:./amqsput Q1
    • 在 Windows 上,输入命令:amqsput Q1

此时会显示以下消息:

样本 amqsput0 启动
目标队列为 Q1

  1. 在一行或多行上输入某些消息文本,然后按 Enter 键两次。 此时会显示以下消息:

样本 amqsput0 结束

您现在已经创建了测试消息并将其放入远程队列。下一个任务是验证是否已接收到测试消息。

五、验证是否已发送测试消息

使用 WebSphere MQ 资源管理器来验证是否已发送测试消息

在接收机器(主管队列管理器 QM_APPLE 的机器)上执行此任务。

接收队列管理器上:

  1. 在导航器视图中,展开队列管理器 QM_APPLE。
  2. 单击队列文件夹。
  3. 在内容视图中,右键单击队列 Q1,然后单击浏览消息...。 此时会打开消息浏览器,显示当前 Q1 上的消息列表。
  4. 双击列表中的最后一条消息以查看其属性对话框。

在属性对话框的数据页上,消息数据字段以人类可读的格式显示了消息的内容。

使用 MQSC 验证是否已发送测试消息

您在接收机器(主管队列管理器 QM_APPLE 的机器)上执行此任务。使用 amqsget样本程序来从队列中取回消息。

打开命令提示符,然后按照以下步骤操作:

启动 amqsget样本程序,如下所示:

  • 在 Linux®上,切换到 /opt/mqm/samp/bin 目录,然后输入命令:./amqsget Q1
  • 在 Windows®上,输入命令:amqsget Q1

此时会启动该样本程序,并显示您的消息以及此队列上的任何其他消息。在短暂停留后,样本程序结束,并再次显示命令提示符。

恭喜!您现在已经完成了本教程。

如果文章对你用,请支持万事如意网址导航

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Stella981 Stella981
3年前
RabbitMQ的简单模式快速入门与超时异常的处理方法
本文适合JAVA新人,想了解RabbitMQ又不想去看官网文档的人(英语水看的头疼(◎﹏◎),但建议有能力还是去看官网文档)。消息队列MQ(一)MQ全称为MessageQueue,消息队列是应用程序和应用程序之间的通信方法。先引入一下常见的通讯方案。!(https://oscimg.oschina.net/
Wesley13 Wesley13
3年前
IBM MQ8.0配置
因为工作需要使用MQServer,使用HyperV安装的win7操作系统作为载体来搭建MQ环境。经过不断下一步,我们安装好了MQ。然后开始配置:队列管理器名:QM\_JACK服务器连接通道:CNN\_JACK端口:8927接收队列名:QUEUE\_RECV发送队列名:QUEUE\_REPLYMQ用户名:fromsilence(
Stella981 Stella981
3年前
MQ study
1\.什么是MQ?消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过写和检索出入列队的针对应用程序的数据(消息)来通信,而无需专用连接来链接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过队列来通信。队列的使用除去了接收和发送应用程序同
Stella981 Stella981
3年前
RabbitMq学习笔记——概念
1、RabbitMQ简介  MQ全称为MessageQueue(消息队列),是一种“应用程序”<—“应用程序”的通信方法。MQ是一个典型的“消费”<—“生产者”模型的代表,生成者往消息队列中写入消息,消费者从消息队列中读取消息。2、MQ的应用场景  对于一个大型的软件系统来说,它会有很多的组件或者说模块或者说子系统或者
Wesley13 Wesley13
3年前
MQ介绍 & 实例
阅读目录定义优秀MQ特点产品比较实例(简单的实战)关于消息队列与分布式的那些事定义:消息队列(MQ)是一种应用程序对应用程序的通信方法,应用程序通过队列进行通信,而不是通过直接调用彼此来通信,队列的使用除去了接收和发送应
Wesley13 Wesley13
3年前
MQ 消息队列
1、场景作用削峰填谷,异步解耦。2、如何保证消息不被重复消费呢?这个问题可以换个思路,保证消息重复消费,其实是保证程序的幂等性。无论消息如何重复,程序运行的结果是一致的。比如消费消息后做数据库插入操作,为了防止消息重复消费,可以在插入前先查询一下有没有对应的数据。3、怎么保证从消息队列里拿到的数据按顺序执
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_