【问题标题】:Can WebSphere MQ transfer file(e.g. *.txt) directly?WebSphere MQ 可以直接传输文件(例如 *.txt)吗?
【发布时间】:2012-04-13 21:34:00
【问题描述】:

我是 WebSphere MQ 的新手,我正在尝试使用 c# 代码将文件作为消息通过 WebSphere MQ 移动。 WebSphere MQ 可以直接传输文件(例如 *.txt)吗?

提前致谢。

【问题讨论】:

  • 帖子标题询问WMQ是否可以传输文件,但正文提到了WMQ文件传输版。目前尚不清楚您指的是哪个。你能澄清一下吗?您是否正在尝试编写代码以将文件放入消息中?还是您想通过代码推动 FTE 转移?
  • 抱歉误导。我没有WMQ文件传输版,只想写代码将文件放入消息中。现在我使用FileStream将文件内容作为字符串读取,然后将字符串放入消息中。任何方式更好?谢谢!

标签: ibm-mq


【解决方案1】:

WebSphere MQ File Transfer Edition (FTE) 是构建在 WebSphere MQ 之上的用于传输文件的产品。传输文件不需要编码。您可以通过命令和 MQ Explorer 配置文件传输。您还可以通过脚本启动文件传输。

通读这个 developerWorks article

【讨论】:

  • 抱歉误导,但我没有 FTE。也许我必须自己编写代码来传输文件。另外谢谢!
【解决方案2】:

不,基本 WebSphere MQ 不直接传输文件。移动文件的语义包括文件名、目录路径、跨不同类型文件系统的名称转换(即 UNIX 文件树与 z/OS 分区数据集)。消息传递使用特定于队列和主题的语义,这些语义与文件的语义截然不同。

因此,基本 WMQ 不会尝试将文件语义作为其核心功能的一部分。 WebSphere MQ File Transfer EditionIBM Sterling Connect:Direct 提供该功能。在 FTE 的情况下,托管文件传输本身就构建在 WebSphere MQ 之上。

许多人过去编写了使用消息传递来移动文件的解决方案,无论是 WebSphere MQ 还是其他传输提供商。事实证明,以稳健的方式这样做是一项不平凡的任务。以下是一些问题:

  • 如果您将每个文件都设为一条消息,则消息大小会有很大差异。调整消息传递引擎以同时处理非常大和非常小的消息非常困难。
  • 如果您将文件分成块,然后您可以调整块大小以获得最佳消息传递性能,但现在您必须处理序列保存和丢失消息的重新发送。
  • 是否追加、替换或重命名具有相同名称的目标文件的一般问题。
  • 如何以事务方式使文件在目的地可用的一般问题。您不希望收件人获取半个文件。
  • 文件完整性(FTE 对文件进行哈希处理,以确保它在传输过程中不会被更改)。

这些是以通用方式执行此操作的问题示例。但是,如果您只需要一次性的点对点解决方案,请查看 Q 程序 SupportPac MA01。它将获取文件并一次将一行放入消息中,或者将整个文件变成一条消息。它也可以用作管道,因此可以有两个 Q 实例,其中一个将消息通过管道传输到队列,另一个检索它们。

【讨论】:

  • 非常感谢!您提到了第一个问题,“很难调整消息传递引擎以同时处理非常大和非常小的消息”,这是什么意思?它会降低性能,对吧?
  • 感谢您的回复!性能对应用程序很重要,必须避免停止数据在通道中流动。收到消息后,我们应该释放相关资源,对吗?在我的应用程序中,我调用 qmgr.Disconnect() 来释放资源。够了吗?任何更好的方法?
  • 定义“更好的方式”。几个 FTE 代理的成本将低于您试图从本土版本中解决问题所花费的成本。如果您预计部署到需要移动文件的大型节点网络,则性能、可靠性和可管理性方面的差异将为代理支付费用。但是,如果您仍想探索设计选项,请提出一个新问题。 SO 不像讨论论坛那样工作,而是由离散的问题和投票驱动。带有自己标签和答案的新问题将更好地帮助下一个遇到类似问题的人。
猜你喜欢
  • 1970-01-01
  • 2013-10-03
  • 1970-01-01
  • 2023-03-07
  • 2015-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多