Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
连接到单个Websphere MQ的多个Websphere应用程序服务器失败_Websphere_Ibm Mq - Fatal编程技术网

连接到单个Websphere MQ的多个Websphere应用程序服务器失败

连接到单个Websphere MQ的多个Websphere应用程序服务器失败,websphere,ibm-mq,Websphere,Ibm Mq,问题: 将多个使用者应用程序活动规范附加到分布式VM服务器上的单个MQ会导致MQ消息中出现空负载。 注:见底部的注释。mq没有问题 详细信息: 我在2台VM服务器上部署了3个Websphere应用程序。1个应用程序是发布者,其他2个应用程序是连接到单个MQ管理器的使用者,以及MQ。 2消费者应用程序正在提取消息并对其进行处理。单独服务器上的使用者应用程序接收空负载。我已经确认,多个应用服务器实例连接到MQ似乎是一个问题。通过在服务器2上部署具有使用者2的发布服务器进行确认,然后使用者1失败 问题

问题: 将多个使用者应用程序活动规范附加到分布式VM服务器上的单个MQ会导致MQ消息中出现空负载。 注:见底部的注释。mq没有问题

详细信息: 我在2台VM服务器上部署了3个Websphere应用程序。1个应用程序是发布者,其他2个应用程序是连接到单个MQ管理器的使用者,以及MQ。 2消费者应用程序正在提取消息并对其进行处理。单独服务器上的使用者应用程序接收空负载。我已经确认,多个应用服务器实例连接到MQ似乎是一个问题。通过在服务器2上部署具有使用者2的发布服务器进行确认,然后使用者1失败

问题: 是否有人尝试将部署在单独服务器实例上的多个MDB应用程序绑定到一个队列管理器和一个MQ

规格:

WebSphere7,EJB3.0MDB,事务关闭,在另一台机器上安装的队列中排队

目标:

分布式计算,针对大量消息进行扩展

我认为这是一个配置问题,但不是100%确定应该在哪里查找。我已经读到可以使用MQLink,但我不明白为什么需要使用服务总线集成

支持双重含义: [MQ Link][1

更新:我修复了这个问题,它与类加载器问题和重复类的组合有关。请参阅下面我添加的解决方案注释

编辑历史记录: -明确了规范,明确了问题,增加了总体目标。 -解决方案的参考注释

是否有人尝试在上附加多个部署的MDB应用程序 单独的服务器实例绑定到一个本地MQ

多个MDB应用程序部署在不同的服务器上,连接到一个队列管理器(但不同的队列)是一个正常的场景,我们在任何地方都有它,所有应用程序都可以正常工作

但是,我怀疑您正在做的是:多个MDB应用程序部署在不同的服务器上,连接到一个队列管理器,并侦听同一个队列

在这种情况下,一个消费者只能收到一条消息

您需要为每个应用程序创建单独的队列,并为发布者发布的主题创建订阅

添加:

我怀疑,为了实现负载平衡,您可能面临的问题是,当您的第一个应用程序获取消息时,它不会发出提交。因此,队列中会有一条未经限制的消息,这可能会阻止您的其他应用程序从队列中获取消息。当您的第一个应用程序完成其处理时,它会发出com麻省理工学院,但又一次,它准备挑选信息,因此它再次发出get

在我的体系结构中,我们使用多个队列管理器实现了负载平衡,如下所示:

您可以创建3个队列管理器,例如GatewayQMApp1QMApp2QM

将三个队列管理器保持在同一集群中

网关QM中创建别名队列(在集群中共享),并要求您的Puting应用程序将消息放入网关队列

现在,在每个App1QM和App2QM中创建一个本地群集队列。分别通过应用程序App1和App2从这些队列中读取


此实现为您提供了更好的安全性,并提供了一个完美的负载平衡器。

此特定问题是由一个代码问题和Websphere控制台中设置为“父级优先”的类加载组合造成的。在一个节点上它可以工作,而集群中的其他节点将失败,我认为这是由“父级优先”造成的背景

更重要的是,就我在集群中的配置而言,将多个活动规范绑定到单个MQ以提供分布式计算是一个正确的解决方案


但“积分”应归于“nitgeek”如果您正在寻找超大容量的解决方案,请参考上面的解决方案。重要的是要了解单个MQ可以具有非常高的深度,并且需要花费大量时间才能充分利用一个MQ。我当前的配置是使用多个MDB进行快速配置和分布式处理的良好起点。

不,我想听听相同的队列。这是一个分布式计算解决方案。您可以为MDB定义要为MDB启动的最大会话数。如果队列中有5000条消息,并且希望每个部署的MDB同时处理15个线程(基于性能和硬件),每个MDB将提取其最大数量并处理它们。我想我现在已经解决了,我会在确认后发布解决方案。好的,所以这就是您所说的负载平衡。如果两个进程侦听同一队列,那么肯定会在进程之间分配消息。我在回答中的意思是,同一消息不能发送到both.我将修改我的答案。是的,负载平衡正在发生,只是当辅助服务器拾取消息时消息被损坏。提交会影响其他使用者端吗?MQ只是一个带有消息的代理,一旦发布者发布该消息,它不应该影响使用者端。您的解决方案可以工作,基本上有一个网关,但为避免按队列管理器组进行扩展的过度操作。您可以在app server中添加本地队列引用,作为物理队列的代理。该引用或MQ链接不支持路由器,但需要更多基础结构。您能否澄清为什么选择按整个队列管理器进行扩展,而不是使用本地队列作为远程队列的代理队列,或者可能是IBM文档中提到的执行路由的MQlink?感谢您的输入。我认为这对其他人来说是一个很好的见解。我们的流量太大了,以至于一马赫